diff --git a/data/templates/file/CSharp/CSharp.EmptyClass.xft b/data/templates/file/CSharp/CSharp.EmptyClass.xft index a31f97f30e..ecb97580cc 100644 --- a/data/templates/file/CSharp/CSharp.EmptyClass.xft +++ b/data/templates/file/CSharp/CSharp.EmptyClass.xft @@ -20,7 +20,7 @@ ${Path} -> Full path of the file ${ClassName} -> Class name (generally FileNameWithoutExtension w/o 'bad' characters) --> - + /// Description of ${ClassName}. /// - public <% if (IsSealed) { %>sealed <% } %>class ${ClassName} + public class ${ClassName} { public ${ClassName}() { diff --git a/doc/SharpDevelopInfoResources.txt b/doc/SharpDevelopInfoResources.txt index 7ff2335700..23f74bc174 100644 --- a/doc/SharpDevelopInfoResources.txt +++ b/doc/SharpDevelopInfoResources.txt @@ -6,22 +6,23 @@ http://community.sharpdevelop.net/forums/ ++ WIKI ++ http://wiki.sharpdevelop.net/ (HOME) -http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.FeatureVideos -http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.HowToDoThings +http://wiki.sharpdevelop.net/SharpDevelopSites.ashx (sites and servers) +http://wiki.sharpdevelop.net/ScreenRecordingsForDevelopers.ashx ++ ROADMAPS ++ -http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.SharpDevelop2xRoadmap +http://wiki.sharpdevelop.net/RoadmapVersion2x.ashx +http://wiki.sharpdevelop.net/RoadmapVersion3x.ashx ++ HELPING ++ -http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.HowCanIHelp -http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.FeaturesYouCouldHelpUsWith +http://wiki.sharpdevelop.net/JoiningTheTeam.ashx +http://wiki.sharpdevelop.net/FeaturesWeSolicitHelpFor.ashx ++ WISH LIST ++ -http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.SharpDevelopWishList +http://wiki.sharpdevelop.net/Wishlist.ashx diff --git a/doc/copyright.txt b/doc/copyright.txt index 566a96137e..8888547538 100644 --- a/doc/copyright.txt +++ b/doc/copyright.txt @@ -1,4 +1,4 @@ -Copyright 2002-2006 by +Copyright 2002-2007 by AlphaSierraPapa, Christoph Wille Vordernberger Strasse 27/8 diff --git a/doc/readme.rtf b/doc/readme.rtf index 6e8229ae68..57f2712279 100644 --- a/doc/readme.rtf +++ b/doc/readme.rtf @@ -1,18 +1,18 @@ {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;} {\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Albany{\*\falt Arial};}{\f40\fbidi \fnil\fcharset2\fprq0{\*\panose 00000000000000000000}StarSymbol;} -{\f41\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603030804020204}Bitstream Vera Sans;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\f41\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603030804020204}Bitstream Vera Sans{\*\falt Malgun Gothic};}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} {\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \froman\fcharset0\fprq0{\*\panose 020f0502020204030204}Calibri;} -{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f42\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f43\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f45\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f47\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f49\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f50\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f52\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f53\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} -{\f55\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f56\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f57\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f58\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} -{\f59\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f60\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f62\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f63\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;} -{\f65\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f66\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f67\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f68\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);} -{\f69\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f70\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f382\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f383\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} -{\f385\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f386\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f389\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f223\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f224\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f226\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f227\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f228\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f229\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f230\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f231\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f233\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f234\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} +{\f236\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f237\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f238\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f239\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} +{\f240\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f241\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f243\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f244\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;} +{\f246\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f247\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f248\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f249\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);} +{\f250\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f251\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f563\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f564\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} +{\f566\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f567\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f570\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} @@ -27,12 +27,14 @@ {\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} -{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; -\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 } -\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{ +{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} +{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} +{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; +\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128; +\red192\green192\blue192;}{\*\defchp \fs22 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{ +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{ \s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\wrapdefault\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs32\alang1025 \ltrch\fcs0 \b\fs32\cf1\lang1033\langfe255\loch\f1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 \sbasedon17 \snext17 \slink15 \sqformat heading 1;}{\s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af1\afs28\alang1025 \ltrch\fcs0 \b\i\f1\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink16 \sqformat \styrsid16001860 heading 2;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* @@ -68,10 +70,11 @@ WW-Absatz-Standardschriftart;}{\*\cs25 \additive \cf1\lang0\langfe255\loch\f3\la \'01\u-3929 ?;}{\levelnumbers;}\f10\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0 \leveljcn0\levelfollow2\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname WW8Num5;}\listid3}}{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1} -{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}}{\*\rsidtbl \rsid7266\rsid478716\rsid1325536\rsid1529975\rsid2386661\rsid3544784\rsid5133654\rsid5311771\rsid6836014\rsid8399799\rsid8998230\rsid10511801 -\rsid11565985\rsid11820290\rsid12669354\rsid13114330\rsid14104483\rsid14353066\rsid14357922\rsid14500044\rsid15205648\rsid15797313\rsid16001860\rsid16473051}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1 -\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Tom Verbeek}{\operator Christoph Wille}{\creatim\yr2001\mo5\dy7\hr17\min11}{\revtim\yr2007\mo3\dy6\hr21\min22}{\printim\yr2113\mo1\dy1}{\version14}{\edmins88}{\nofpages2}{\nofwords302}{\nofchars2228} -{\*\company AlphaSierraPapa}{\nofcharsws2525}{\vern32857}{\*\saveprevpict}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw11905\paperh16837\margl1134\margr1134\margt1134\margb1134\gutter0\ltrsect +{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}}{\*\rsidtbl \rsid7266\rsid478716\rsid1325536\rsid1529975\rsid2108658\rsid2386661\rsid3544784\rsid4218794\rsid5133654\rsid5311771\rsid6836014\rsid8399799 +\rsid8998230\rsid10511801\rsid11565985\rsid11820290\rsid12669354\rsid13114330\rsid14104483\rsid14353066\rsid14357922\rsid14500044\rsid15205648\rsid15797313\rsid16001860\rsid16391990\rsid16473051}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0 +\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Tom Verbeek}{\operator Christoph Wille}{\creatim\yr2001\mo5\dy7\hr17\min11}{\revtim\yr2007\mo6\dy27\hr8\min19}{\printim\yr2113\mo1\dy1}{\version15}{\edmins89} +{\nofpages3}{\nofwords301}{\nofchars2181}{\*\company AlphaSierraPapa}{\nofcharsws2478}{\vern32889}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\paperw11905\paperh16837\margl1134\margr1134\margt1134\margb1134\gutter0\ltrsect \deftab1250\widowctrl\ftnbj\aenddoc\trackmoves1\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0 \noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\lytprtmet\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3 \jcompress\viewkind1\viewscale100\nolnhtadjtbl\rsidroot6836014\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\sbknone\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1 @@ -80,9 +83,9 @@ WW-Absatz-Standardschriftart;}{\*\cs25 \additive \cf1\lang0\langfe255\loch\f3\la {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s17\qc \li0\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\rtlch\fcs1 \ab\af41\afs120 \ltrch\fcs0 \b\f41\fs120\insrsid14357922\charrsid14357922 SharpDevelop}{\rtlch\fcs1 \ab\af41\afs120 \ltrch\fcs0 \b\f41\fs120\insrsid14357922 \par }\pard \ltrpar\s17\qc \li0\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin0\itap0\pararsid14357922 {\rtlch\fcs1 \ab\af41\afs120 \ltrch\fcs0 \b\f41\fs120\insrsid5133654\charrsid14357922 2}{\rtlch\fcs1 \ab\af41\afs120 \ltrch\fcs0 -\b\f41\fs120\insrsid6836014\charrsid14357922 .}{\rtlch\fcs1 \ab\af41\afs120 \ltrch\fcs0 \b\f41\fs120\insrsid14357922\charrsid14357922 1 +\b\f41\fs120\insrsid6836014\charrsid14357922 .}{\rtlch\fcs1 \ab\af41\afs120 \ltrch\fcs0 \b\f41\fs120\insrsid2108658 2}{\rtlch\fcs1 \ab\af41\afs120 \ltrch\fcs0 \b\f41\fs120\insrsid14357922\charrsid14357922 \par }\pard \ltrpar\s17\ql \li0\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 -\par }\pard \ltrpar\s17\qc \li0\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin0\itap0\pararsid6836014 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1325536 {\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}} +\par }\pard \ltrpar\s17\qc \li0\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin0\itap0\pararsid6836014 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4218794 {\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}} {\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0 \picw14115\pich7763\picwgoal8002\pichgoal4401\pngblip\bliptag-992432282{\*\blipuid c4d8af66daa9b8284dc64b16077915b5}89504e470d0a1a0a0000000d4948445200000190000000dc0802000000d13060380000002c744558744372656174696f6e2054696d6500576564203130204170 7220323030322031383a33303a3532202b3031303006027e470000000774494d4507d2040a101f3189bdfcf4000000097048597300000b1200000b1201d2dd7e @@ -7692,51 +7695,52 @@ ger, who }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5311771 is the main developer an \ltrch\fcs0 \insrsid5311771 , who have helped a great deal to make the 1.0 release}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 a successful one}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5311771 \endash though it took us four years and a few architectural changes along the way.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 \par -\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 What you got on your machine is now }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11565985 version 2.1 \endash a vastly enhanced product, and we encourage you to take the feature tour.}{\rtlch\fcs1 \af0 -\ltrch\fcs0 \insrsid11820290 +\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 What you got on your machine is now }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11565985 version 2.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2108658 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11565985 \endash + a vastly enhanced product, and we encourage you to take the feature tour.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 \par \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13114330 \par }{\rtlch\fcs1 \ab\ai\af0 \ltrch\fcs0 \b\i\insrsid13114330\charrsid13114330 The #develop team -\par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 HYPERLINK "http://www.icsharpcode.net/pub/relations/team.aspx" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1325536 {\*\datafield +\par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 HYPERLINK "http://www.icsharpcode.net/pub/relations/team.aspx" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4218794 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b6600000068007400740070003a002f002f007700770077002e00690063007300680061007200700063006f00640065002e006e00650074002f007000750062002f00720065006c006100740069006f006e0073002f00 -7400650061006d002e006100730070007800000000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid13114330\charrsid14104483 http://www.icsharpcode.net/pub/relations/team.aspx}}}\sectd \ltrsect\sbknone\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 -\af0 \ltrch\fcs0 \insrsid13114330\charrsid13114330 -\par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 HYPERLINK "http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.Contributors" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1325536 {\*\datafield -00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b8800000068007400740070003a002f002f00770069006b0069002e007300680061007200700064006500760065006c006f0070002e006e00650074002f00640065006600610075006c0074002e006100730070007800 -2f005300680061007200700044006500760065006c006f0070002e0043006f006e007400720069006200750074006f0072007300000000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid13114330\charrsid14104483 -http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.Contributors}}}\sectd \ltrsect\sbknone\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13114330\charrsid13114330 -\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 +7400650061006d002e00610073007000780000000000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid13114330\charrsid14104483 http://www.icsharpcode.net/pub/relations/team.aspx}}}\sectd \ltrsect\sbknone\linex0\sectdefaultcl\sftnbj { +\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13114330\charrsid13114330 +\par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2108658 HYPERLINK "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2108658\charrsid2108658 http://wiki.sharpdevelop.net/Contributors.ashx}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2108658 " }}{\fldrslt { +\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid2108658\charrsid9202661 http://wiki.sharpdevelop.net/Contributors.ashx}}}\sectd \ltrsect\sbknone\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 +\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2108658 \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\wrapdefault\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14500044 \rtlch\fcs1 \ab\af1\afs32\alang1025 \ltrch\fcs0 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14500044 \hich\af0\dbch\af0\loch\f1 Overview}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 \par }\pard\plain \ltrpar\s19\qj \fi1\li360\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230\charrsid8998230 #develop (short for SharpDevelop) is a free }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230 Integrated Development Environment (IDE)}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230\charrsid8998230 for C#}{\rtlch\fcs1 \af0 -\ltrch\fcs0 \insrsid1529975 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230\charrsid8998230 VB.NET}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1529975 , Managed C++ and ILAsm}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230\charrsid8998230 - projects on Microsoft's .NET platform.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230 It is written entirely in C#, and comes }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1529975 with features you would expect in an IDE}{\rtlch\fcs1 \af0 \ltrch\fcs0 -\insrsid16001860 plus a few more}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1529975 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14500044\charrsid8998230 +\ltrch\fcs0 \insrsid1529975 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230\charrsid8998230 VB.NET}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2108658 and Boo }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230\charrsid8998230 +projects on Microsoft's .NET platform.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230 It is written }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2108658 (almost) }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8998230 entirely in C#, and comes }{\rtlch\fcs1 \af0 +\ltrch\fcs0 \insrsid1529975 with features you would expect in an IDE}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16001860 plus a few more}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1529975 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14500044\charrsid8998230 \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\wrapdefault\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14500044 \rtlch\fcs1 \ab\af1\afs32\alang1025 \ltrch\fcs0 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14500044 \hich\af0\dbch\af0\loch\f1 Features \par }\pard\plain \ltrpar\s17\ql \li0\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin0\itap0\pararsid14357922 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 For detailed information on the features present in SharpDevelop, please take the feature tour: \par -\par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 HYPERLINK "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922\charrsid14357922 http://www.icsharpcode.net/OpenSource/SD/Tour/}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 " }}{\fldrslt { -\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid14357922\charrsid16391990 http://www.icsharpcode.net/OpenSource/SD/Tour/}}}\sectd \ltrsect\sbknone\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 +\par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 HYPERLINK "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922\charrsid14357922 http://www.icsharpcode.net/OpenSource/SD/Tour/}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 " }{\rtlch\fcs1 +\af0 \ltrch\fcs0 \insrsid2108658 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7600000068007400740070003a002f002f007700770077002e00690063007300680061007200700063006f00640065002e006e00650074002f004f00700065006e0053006f0075007200630065002f00530044002f00 +54006f00750072002f000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid14357922\charrsid16391990 http://www.icsharpcode.net/OpenSource/SD/Tour/}}}\sectd \ltrsect +\sbknone\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14357922 \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb240\sa60\keepn\nowidctlpar\wrapdefault\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0\pararsid14500044 \rtlch\fcs1 \ab\af1\afs32\alang1025 \ltrch\fcs0 \b\fs32\cf1\lang1033\langfe255\loch\af1\hich\af0\dbch\af0\cgrid\langnp1033\langfenp255 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid14500044 \hich\af0\dbch\af0\loch\f1 Support \par }\pard\plain \ltrpar\s19\qj \fi1\li360\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin360\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\cf1\lang2057\langfe255\cgrid\langnp2057\langfenp255 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 Our primary means of support is via our Web-based forum (please do not email team members directly unless they advise you to do so in the forum):}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14500044 \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 \par }\pard \ltrpar\s19\qj \fi1\li360\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin360\itap0\pararsid14104483 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 HYPERLINK "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801\charrsid10511801 -http://community.sharpdeve}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 lop.net/forums/" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1325536 {\*\datafield +http://community.sharpdeve}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 lop.net/forums/" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4218794 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b02000000170000002a00000068007400740070003a002f002f0063006f006d006d0075006e006900740079002e007300680061007200700064006500760065006c006f0070002e006e00650074002f0066006f00720075006d0073002f000000e0c9ea79f9bace118c8200aa004b -a90b5400000068007400740070003a002f002f0063006f006d006d0075006e006900740079002e007300680061007200700064006500760065006c006f0070002e006e00650074002f0066006f00720075006d0073002f00000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 +a90b5400000068007400740070003a002f002f0063006f006d006d0075006e006900740079002e007300680061007200700064006500760065006c006f0070002e006e00650074002f0066006f00720075006d0073002f0000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid10511801\charrsid3544784 http://community.sharpdevelop.net/forums/}}}\sectd \ltrsect\sbknone\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 \par \par Before posting, we would like to encourage you to visit }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 our}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 Wiki pages: \par \par }\pard \ltrpar\s19\qj \fi1\li360\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin360\itap0\pararsid10511801 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 HYPERLINK "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801\charrsid10511801 -http://wiki.sharp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 develop.net/" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1325536 {\*\datafield +http://wiki.sharp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 develop.net/" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4218794 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b02000000170000001e00000068007400740070003a002f002f00770069006b0069002e007300680061007200700064006500760065006c006f0070002e006e00650074002f000000e0c9ea79f9bace118c8200aa004ba90b3c00000068007400740070003a002f002f0077006900 -6b0069002e007300680061007200700064006500760065006c006f0070002e006e00650074002f00000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid10511801\charrsid3544784 http://wiki.sharpdevelop.net/}}}\sectd \ltrsect +6b0069002e007300680061007200700064006500760065006c006f0070002e006e00650074002f0000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid10511801\charrsid3544784 http://wiki.sharpdevelop.net/}}}\sectd \ltrsect \sbknone\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 \par }\pard \ltrpar\s19\qj \fi1\li360\ri0\nowidctlpar\wrapdefault\aspalpha\faauto\rin0\lin360\itap0\pararsid14104483 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14104483 \par When reporting bugs, please use the Bug Reporting forum and be sure to revisit the sticky topics on how to make good bug reports. Please provide us with steps to reproduce the error. @@ -7749,10 +7753,10 @@ http://wiki.sharp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 develop.net/" } \par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 \par IC#Code }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 FAQ: Open Source Licenses}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290\charrsid11820290 \par }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 HYPERLINK "}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801\charrsid10511801 http://community.sharpdevelop.net/forums/17/ShowForum.aspx}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10511801 " }{ -\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid1325536 {\*\datafield +\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4218794 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b02000000170000003b00000068007400740070003a002f002f0063006f006d006d0075006e006900740079002e007300680061007200700064006500760065006c006f0070002e006e00650074002f0066006f00720075006d0073002f00310037002f00530068006f0077004600 6f00720075006d002e0061007300700078000000e0c9ea79f9bace118c8200aa004ba90b7600000068007400740070003a002f002f0063006f006d006d0075006e006900740079002e007300680061007200700064006500760065006c006f0070002e006e00650074002f0066006f00720075006d0073002f00310037002f -00530068006f00770046006f00720075006d002e006100730070007800000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid10511801\charrsid3544784 http://community.sharpdevelop.net/forums/17/ShowForum.aspx}}}\sectd \ltrsect +00530068006f00770046006f00720075006d002e00610073007000780000000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs28\ul\cf2\insrsid10511801\charrsid3544784 http://community.sharpdevelop.net/forums/17/ShowForum.aspx}}}\sectd \ltrsect \sbknone\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11820290 \par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8 72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7 @@ -7806,7 +7810,7 @@ c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} -{\*\latentstyles\lsdstimax266\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal; +{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3; \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8; \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6; @@ -7849,8 +7853,8 @@ c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc \lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference; -\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;}}{\*\datastore 010500000200000018000000 -4d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000 +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography; +\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 0105000002000000180000004d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000 d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff @@ -7859,8 +7863,8 @@ fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f00000000000000000000000020d3 -32292d60c701feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f0000000000000000000000004097 +291d83b8c701feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/CompilerParametersPanel.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/CompilerParametersPanel.cs index d787bfa9f7..1d919184d7 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/CompilerParametersPanel.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/CompilerParametersPanel.cs @@ -44,10 +44,10 @@ namespace ICSharpCode.WixBinding WixCompilerExtensionPicker extensionPicker = new WixCompilerExtensionPicker(); extensionPicker.Dock = DockStyle.Fill; ControlDictionary["compilerExtensionsGroupBox"].Controls.Add(extensionPicker); - extensionPicker.ExtensionsChanged += CompilerExtensionsChanged; b = new WixCompilerExtensionBinding(extensionPicker); helper.AddBinding("CompileExtension", b); + extensionPicker.ExtensionsChanged += CompilerExtensionsChanged; InitWarnings(); diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LibraryParametersPanel.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LibraryParametersPanel.cs index 34d57c174f..774b60d6c3 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LibraryParametersPanel.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LibraryParametersPanel.cs @@ -23,10 +23,10 @@ namespace ICSharpCode.WixBinding WixCompilerExtensionPicker extensionPicker = new WixCompilerExtensionPicker(); extensionPicker.Dock = DockStyle.Fill; ControlDictionary["compilerExtensionsGroupBox"].Controls.Add(extensionPicker); - extensionPicker.ExtensionsChanged += CompilerExtensionsChanged; WixCompilerExtensionBinding b = new WixCompilerExtensionBinding(extensionPicker); helper.AddBinding("LibExtension", b); + extensionPicker.ExtensionsChanged += CompilerExtensionsChanged; helper.AddConfigurationSelector(this); } diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LinkerParametersPanel.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LinkerParametersPanel.cs index 6cad597ff9..adfe411b6b 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LinkerParametersPanel.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/LinkerParametersPanel.cs @@ -23,10 +23,10 @@ namespace ICSharpCode.WixBinding WixCompilerExtensionPicker extensionPicker = new WixCompilerExtensionPicker(); extensionPicker.Dock = DockStyle.Fill; ControlDictionary["compilerExtensionsGroupBox"].Controls.Add(extensionPicker); - extensionPicker.ExtensionsChanged += CompilerExtensionsChanged; WixCompilerExtensionBinding b = new WixCompilerExtensionBinding(extensionPicker); helper.AddBinding("LinkExtension", b); + extensionPicker.ExtensionsChanged += CompilerExtensionsChanged; helper.AddConfigurationSelector(this); } diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixCompilerExtensionBinding.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixCompilerExtensionBinding.cs index 96b0a2aa90..9c2213d239 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixCompilerExtensionBinding.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixCompilerExtensionBinding.cs @@ -7,6 +7,7 @@ using System; using System.Collections.ObjectModel; +using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Project; namespace ICSharpCode.WixBinding @@ -33,7 +34,12 @@ namespace ICSharpCode.WixBinding IProject project = Project; WixCompilerExtensionName[] extensions = extensionPicker.GetExtensions(); foreach (WixCompilerExtensionName extension in extensions) { - ProjectService.AddProjectItem(project, CreateProjectItem(extension)); + if (extension.AssemblyName.Length > 0) { + ProjectService.AddProjectItem(project, CreateProjectItem(extension)); + } else { + MessageService.ShowMessage(StringParser.Parse("${res:ICSharpCode.WixBinding.ExtensionBinding.InvalidExtension}")); + return false; + } } return true; } diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIFeatureTreeProject.xpt b/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIFeatureTreeProject.xpt new file mode 100644 index 0000000000..b1582a9be0 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIFeatureTreeProject.xpt @@ -0,0 +1,84 @@ + + diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIInstallDirProject.xpt b/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIInstallDirProject.xpt new file mode 100644 index 0000000000..ac524d7fa8 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIInstallDirProject.xpt @@ -0,0 +1,83 @@ + + diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIMinimalProject.xpt b/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIMinimalProject.xpt new file mode 100644 index 0000000000..5595385e26 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIMinimalProject.xpt @@ -0,0 +1,84 @@ + + diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIMondoProject.xpt b/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIMondoProject.xpt new file mode 100644 index 0000000000..3cd66c3e66 --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Templates/WixUIMondoProject.xpt @@ -0,0 +1,94 @@ + + diff --git a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj index 9548193430..24aa0ca160 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj +++ b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj @@ -192,6 +192,18 @@ Always + + Always + + + Always + + + Always + + + Always + diff --git a/src/AddIns/Misc/UnitTesting/Src/BaseTestMethod.cs b/src/AddIns/Misc/UnitTesting/Src/BaseTestMethod.cs new file mode 100644 index 0000000000..0d402f7f3e --- /dev/null +++ b/src/AddIns/Misc/UnitTesting/Src/BaseTestMethod.cs @@ -0,0 +1,46 @@ +// +// +// +// +// $Revision$ +// + +using System; +using ICSharpCode.SharpDevelop.Dom; + +namespace ICSharpCode.UnitTesting +{ + /// + /// Represents a test method that exists in a base class. + /// + /// + /// In order to have the Unit Test tree run the correct + /// test when we have a class that has a base class with + /// test methods is to return the derived class from the + /// DeclaringType's property. Otherwise the base class + /// method is tested and the derived class is not used. + /// + public class BaseTestMethod : DefaultMethod + { + IMethod method; + + /// + /// Creates a new instance of the BaseTestMethod. + /// + /// The derived class and not + /// the class where the method is actually defined. + /// The base class's test method. + public BaseTestMethod(IClass derivedClass, IMethod method) + : base(method.Name, method.ReturnType, method.Modifiers, method.Region, method.BodyRegion, derivedClass) + { + this.method = method; + } + + /// + /// Gets the actual method used to create this object. + /// + public IMethod Method { + get { return method; } + } + } +} diff --git a/src/AddIns/Misc/UnitTesting/Src/TestClass.cs b/src/AddIns/Misc/UnitTesting/Src/TestClass.cs index 12629fdfdd..5d8b09016e 100644 --- a/src/AddIns/Misc/UnitTesting/Src/TestClass.cs +++ b/src/AddIns/Misc/UnitTesting/Src/TestClass.cs @@ -328,7 +328,8 @@ namespace ICSharpCode.UnitTesting if (c.BaseClass != null) { foreach (IMethod method in c.BaseClass.Methods) { if (TestMethod.IsTestMethod(method)) { - TestMethod testMethod = new TestMethod(c.BaseClass.Name, method); + BaseTestMethod baseTestMethod = new BaseTestMethod(c, method); + TestMethod testMethod = new TestMethod(c.BaseClass.Name, baseTestMethod); if (!testMethods.Contains(testMethod.Name)) { testMethods.Add(testMethod); } diff --git a/src/AddIns/Misc/UnitTesting/Src/UnitTestCommands.cs b/src/AddIns/Misc/UnitTesting/Src/UnitTestCommands.cs index 675c87e961..11750e9b2f 100644 --- a/src/AddIns/Misc/UnitTesting/Src/UnitTestCommands.cs +++ b/src/AddIns/Misc/UnitTesting/Src/UnitTestCommands.cs @@ -45,6 +45,10 @@ namespace ICSharpCode.UnitTesting IMember member = treeView.SelectedMethod; IClass c = treeView.SelectedClass; if (member != null) { + BaseTestMethod baseTestMethod = member as BaseTestMethod; + if (baseTestMethod != null) { + member = baseTestMethod.Method; + } GotoMember(member); } else if (c != null) { GotoClass(c); diff --git a/src/AddIns/Misc/UnitTesting/Test/Project/BaseTestMethodTestFixture.cs b/src/AddIns/Misc/UnitTesting/Test/Project/BaseTestMethodTestFixture.cs new file mode 100644 index 0000000000..5afa3d3be6 --- /dev/null +++ b/src/AddIns/Misc/UnitTesting/Test/Project/BaseTestMethodTestFixture.cs @@ -0,0 +1,91 @@ +// +// +// +// +// $Revision$ +// + +using System; +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.UnitTesting; +using NUnit.Framework; +using UnitTesting.Tests.Utils; + +namespace UnitTesting.Tests.Project +{ + /// + /// Tests that the BaseTestMethod populates the various + /// properties of the DefaultMethod class in its constructor. + /// + [TestFixture] + public class BaseTestMethodTestFixture + { + MockClass mockClass; + MockMethod mockMethod; + BaseTestMethod baseTestMethod; + DomRegion mockMethodRegion; + DomRegion mockMethodBodyRegion; + DefaultReturnType returnType; + + [TestFixtureSetUp] + public void SetUpFixture() + { + mockClass = new MockClass("Tests.MyTestFixture"); + mockMethod = new MockMethod("MyMethod"); + + mockMethodRegion = new DomRegion(0, 0, 0, 10); + mockMethod.Region = mockMethodRegion; + mockMethodBodyRegion = new DomRegion(1, 0, 2, 5); + mockMethod.BodyRegion = mockMethodBodyRegion; + mockMethod.Modifiers = ModifierEnum.Public; + + MockClass returnTypeClass = new MockClass("Tests.ReturnType"); + returnType = new DefaultReturnType(returnTypeClass); + mockMethod.ReturnType = returnType; + + baseTestMethod = new BaseTestMethod(mockClass, mockMethod); + } + + [Test] + public void MethodName() + { + Assert.AreEqual("MyMethod", baseTestMethod.Name); + } + + [Test] + public void DeclaringType() + { + Assert.AreEqual(mockClass, baseTestMethod.DeclaringType); + } + + [Test] + public void ActualMethod() + { + Assert.AreEqual(mockMethod, baseTestMethod.Method); + } + + [Test] + public void MethodRegion() + { + Assert.AreEqual(mockMethodRegion, baseTestMethod.Region); + } + + [Test] + public void MethodBodyRegion() + { + Assert.AreEqual(mockMethodBodyRegion, baseTestMethod.BodyRegion); + } + + [Test] + public void Modifiers() + { + Assert.AreEqual(ModifierEnum.Public, baseTestMethod.Modifiers); + } + + [Test] + public void ReturnType() + { + Assert.IsTrue(Object.ReferenceEquals(returnType, baseTestMethod.ReturnType)); + } + } +} diff --git a/src/AddIns/Misc/UnitTesting/Test/Project/TestMethodsInBaseClassTestFixture.cs b/src/AddIns/Misc/UnitTesting/Test/Project/TestMethodsInBaseClassTestFixture.cs index 7633224b0d..28fbe985e3 100644 --- a/src/AddIns/Misc/UnitTesting/Test/Project/TestMethodsInBaseClassTestFixture.cs +++ b/src/AddIns/Misc/UnitTesting/Test/Project/TestMethodsInBaseClassTestFixture.cs @@ -38,6 +38,7 @@ namespace UnitTesting.Tests.Project public class TestMethodsInBaseClassTestFixture { TestClass testClass; + MockClass c; [SetUp] public void SetUp() @@ -55,7 +56,7 @@ namespace UnitTesting.Tests.Project baseClass.Methods.Add(baseMethod); // Create the derived test class. - MockClass c = new MockClass("RootNamespace.MyTestFixture"); + c = new MockClass("RootNamespace.MyTestFixture"); c.Attributes.Add(new MockAttribute("TestFixture")); c.ProjectContent = projectContent; MockMethod method = new MockMethod("DerivedMethod"); @@ -89,6 +90,19 @@ namespace UnitTesting.Tests.Project Assert.IsTrue(testClass.TestMethods.Contains("TestFixtureBase.BaseMethod")); } + /// + /// The TestMethod.Method property should return an IMethod + /// that returns the derived class from the DeclaringType property + /// and not the base class. This ensures that the correct + /// test is run when selected in the unit test tree. + /// + [Test] + public void BaseMethodDeclaringTypeIsDerivedClass() + { + TestMethod method = testClass.TestMethods["TestFixtureBase.BaseMethod"]; + Assert.AreEqual(c, method.Method.DeclaringType); + } + [Test] public void UpdateTestResultUsingPrefixBaseClassName() { diff --git a/src/AddIns/Misc/UnitTesting/Test/UnitTesting.Tests.csproj b/src/AddIns/Misc/UnitTesting/Test/UnitTesting.Tests.csproj index 90db24a44d..67ca8cf534 100644 --- a/src/AddIns/Misc/UnitTesting/Test/UnitTesting.Tests.csproj +++ b/src/AddIns/Misc/UnitTesting/Test/UnitTesting.Tests.csproj @@ -60,6 +60,7 @@ + diff --git a/src/AddIns/Misc/UnitTesting/Test/Utils/MockMethod.cs b/src/AddIns/Misc/UnitTesting/Test/Utils/MockMethod.cs index 5ea81f2940..786876845c 100644 --- a/src/AddIns/Misc/UnitTesting/Test/Utils/MockMethod.cs +++ b/src/AddIns/Misc/UnitTesting/Test/Utils/MockMethod.cs @@ -14,10 +14,13 @@ namespace UnitTesting.Tests.Utils public class MockMethod : IMethod { IClass declaringType; + ModifierEnum modifiers; DomRegion region = DomRegion.Empty; + DomRegion bodyRegion = DomRegion.Empty; IList attributes = new List(); string name = String.Empty; IList parameters = new List(); + IReturnType returnType; public MockMethod() : this(String.Empty) { @@ -42,7 +45,10 @@ namespace UnitTesting.Tests.Utils public DomRegion BodyRegion { get { - throw new NotImplementedException(); + return bodyRegion; + } + set { + bodyRegion = value; } } @@ -96,10 +102,10 @@ namespace UnitTesting.Tests.Utils public IReturnType ReturnType { get { - return null; + return returnType; } set { - throw new NotImplementedException(); + returnType = value; } } @@ -114,9 +120,10 @@ namespace UnitTesting.Tests.Utils public ModifierEnum Modifiers { get { - return ModifierEnum.None; + return modifiers; } set { + modifiers = value; } } diff --git a/src/AddIns/Misc/UnitTesting/UnitTesting.csproj b/src/AddIns/Misc/UnitTesting/UnitTesting.csproj index cdbdbe55b1..65d58190a9 100644 --- a/src/AddIns/Misc/UnitTesting/UnitTesting.csproj +++ b/src/AddIns/Misc/UnitTesting/UnitTesting.csproj @@ -59,6 +59,7 @@ Never + diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs index 887a5551ae..1e2c744feb 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs @@ -312,30 +312,30 @@ out aliasedType); } void Qualident( -#line 2764 "VBNET.ATG" +#line 2768 "VBNET.ATG" out string qualident) { -#line 2766 "VBNET.ATG" +#line 2770 "VBNET.ATG" string name; qualidentBuilder.Length = 0; Identifier(); -#line 2770 "VBNET.ATG" +#line 2774 "VBNET.ATG" qualidentBuilder.Append(t.val); while ( -#line 2771 "VBNET.ATG" +#line 2775 "VBNET.ATG" DotAndIdentOrKw()) { Expect(10); IdentifierOrKeyword( -#line 2771 "VBNET.ATG" +#line 2775 "VBNET.ATG" out name); -#line 2771 "VBNET.ATG" +#line 2775 "VBNET.ATG" qualidentBuilder.Append('.'); qualidentBuilder.Append(name); } -#line 2773 "VBNET.ATG" +#line 2777 "VBNET.ATG" qualident = qualidentBuilder.ToString(); } @@ -439,69 +439,69 @@ out attribute); } void TypeModifier( -#line 2844 "VBNET.ATG" +#line 2848 "VBNET.ATG" ModifierList m) { switch (la.kind) { case 148: { lexer.NextToken(); -#line 2845 "VBNET.ATG" +#line 2849 "VBNET.ATG" m.Add(Modifiers.Public, t.Location); break; } case 147: { lexer.NextToken(); -#line 2846 "VBNET.ATG" +#line 2850 "VBNET.ATG" m.Add(Modifiers.Protected, t.Location); break; } case 99: { lexer.NextToken(); -#line 2847 "VBNET.ATG" +#line 2851 "VBNET.ATG" m.Add(Modifiers.Internal, t.Location); break; } case 145: { lexer.NextToken(); -#line 2848 "VBNET.ATG" +#line 2852 "VBNET.ATG" m.Add(Modifiers.Private, t.Location); break; } case 158: { lexer.NextToken(); -#line 2849 "VBNET.ATG" +#line 2853 "VBNET.ATG" m.Add(Modifiers.Static, t.Location); break; } case 157: { lexer.NextToken(); -#line 2850 "VBNET.ATG" +#line 2854 "VBNET.ATG" m.Add(Modifiers.New, t.Location); break; } case 122: { lexer.NextToken(); -#line 2851 "VBNET.ATG" +#line 2855 "VBNET.ATG" m.Add(Modifiers.Abstract, t.Location); break; } case 131: { lexer.NextToken(); -#line 2852 "VBNET.ATG" +#line 2856 "VBNET.ATG" m.Add(Modifiers.Sealed, t.Location); break; } case 203: { lexer.NextToken(); -#line 2853 "VBNET.ATG" +#line 2857 "VBNET.ATG" m.Add(Modifiers.Partial, t.Location); break; } @@ -1275,132 +1275,132 @@ out p); } void MemberModifier( -#line 2856 "VBNET.ATG" +#line 2860 "VBNET.ATG" ModifierList m) { switch (la.kind) { case 122: { lexer.NextToken(); -#line 2857 "VBNET.ATG" +#line 2861 "VBNET.ATG" m.Add(Modifiers.Abstract, t.Location); break; } case 79: { lexer.NextToken(); -#line 2858 "VBNET.ATG" +#line 2862 "VBNET.ATG" m.Add(Modifiers.Default, t.Location); break; } case 99: { lexer.NextToken(); -#line 2859 "VBNET.ATG" +#line 2863 "VBNET.ATG" m.Add(Modifiers.Internal, t.Location); break; } case 157: { lexer.NextToken(); -#line 2860 "VBNET.ATG" +#line 2864 "VBNET.ATG" m.Add(Modifiers.New, t.Location); break; } case 142: { lexer.NextToken(); -#line 2861 "VBNET.ATG" +#line 2865 "VBNET.ATG" m.Add(Modifiers.Override, t.Location); break; } case 123: { lexer.NextToken(); -#line 2862 "VBNET.ATG" +#line 2866 "VBNET.ATG" m.Add(Modifiers.Abstract, t.Location); break; } case 145: { lexer.NextToken(); -#line 2863 "VBNET.ATG" +#line 2867 "VBNET.ATG" m.Add(Modifiers.Private, t.Location); break; } case 147: { lexer.NextToken(); -#line 2864 "VBNET.ATG" +#line 2868 "VBNET.ATG" m.Add(Modifiers.Protected, t.Location); break; } case 148: { lexer.NextToken(); -#line 2865 "VBNET.ATG" +#line 2869 "VBNET.ATG" m.Add(Modifiers.Public, t.Location); break; } case 131: { lexer.NextToken(); -#line 2866 "VBNET.ATG" +#line 2870 "VBNET.ATG" m.Add(Modifiers.Sealed, t.Location); break; } case 132: { lexer.NextToken(); -#line 2867 "VBNET.ATG" +#line 2871 "VBNET.ATG" m.Add(Modifiers.Sealed, t.Location); break; } case 158: { lexer.NextToken(); -#line 2868 "VBNET.ATG" +#line 2872 "VBNET.ATG" m.Add(Modifiers.Static, t.Location); break; } case 141: { lexer.NextToken(); -#line 2869 "VBNET.ATG" +#line 2873 "VBNET.ATG" m.Add(Modifiers.Virtual, t.Location); break; } case 140: { lexer.NextToken(); -#line 2870 "VBNET.ATG" +#line 2874 "VBNET.ATG" m.Add(Modifiers.Overloads, t.Location); break; } case 150: { lexer.NextToken(); -#line 2871 "VBNET.ATG" +#line 2875 "VBNET.ATG" m.Add(Modifiers.ReadOnly, t.Location); break; } case 184: { lexer.NextToken(); -#line 2872 "VBNET.ATG" +#line 2876 "VBNET.ATG" m.Add(Modifiers.WriteOnly, t.Location); break; } case 183: { lexer.NextToken(); -#line 2873 "VBNET.ATG" +#line 2877 "VBNET.ATG" m.Add(Modifiers.WithEvents, t.Location); break; } case 81: { lexer.NextToken(); -#line 2874 "VBNET.ATG" +#line 2878 "VBNET.ATG" m.Add(Modifiers.Dim, t.Location); break; } @@ -3137,31 +3137,31 @@ out stmt); } void PropertyAccessorAccessModifier( -#line 2877 "VBNET.ATG" +#line 2881 "VBNET.ATG" out Modifiers m) { -#line 2878 "VBNET.ATG" +#line 2882 "VBNET.ATG" m = Modifiers.None; while (StartOf(26)) { if (la.kind == 148) { lexer.NextToken(); -#line 2880 "VBNET.ATG" +#line 2884 "VBNET.ATG" m |= Modifiers.Public; } else if (la.kind == 147) { lexer.NextToken(); -#line 2881 "VBNET.ATG" +#line 2885 "VBNET.ATG" m |= Modifiers.Protected; } else if (la.kind == 99) { lexer.NextToken(); -#line 2882 "VBNET.ATG" +#line 2886 "VBNET.ATG" m |= Modifiers.Internal; } else { lexer.NextToken(); -#line 2883 "VBNET.ATG" +#line 2887 "VBNET.ATG" m |= Modifiers.Private; } } @@ -3375,10 +3375,10 @@ out eventName); } void IdentifierOrKeyword( -#line 2811 "VBNET.ATG" +#line 2815 "VBNET.ATG" out string name) { -#line 2813 "VBNET.ATG" +#line 2817 "VBNET.ATG" lexer.NextToken(); name = t.val; } @@ -3862,114 +3862,114 @@ out parameters); } void PrimitiveTypeName( -#line 2818 "VBNET.ATG" +#line 2822 "VBNET.ATG" out string type) { -#line 2819 "VBNET.ATG" +#line 2823 "VBNET.ATG" type = String.Empty; switch (la.kind) { case 52: { lexer.NextToken(); -#line 2820 "VBNET.ATG" +#line 2824 "VBNET.ATG" type = "Boolean"; break; } case 76: { lexer.NextToken(); -#line 2821 "VBNET.ATG" +#line 2825 "VBNET.ATG" type = "Date"; break; } case 65: { lexer.NextToken(); -#line 2822 "VBNET.ATG" +#line 2826 "VBNET.ATG" type = "Char"; break; } case 165: { lexer.NextToken(); -#line 2823 "VBNET.ATG" +#line 2827 "VBNET.ATG" type = "String"; break; } case 77: { lexer.NextToken(); -#line 2824 "VBNET.ATG" +#line 2828 "VBNET.ATG" type = "Decimal"; break; } case 54: { lexer.NextToken(); -#line 2825 "VBNET.ATG" +#line 2829 "VBNET.ATG" type = "Byte"; break; } case 159: { lexer.NextToken(); -#line 2826 "VBNET.ATG" +#line 2830 "VBNET.ATG" type = "Short"; break; } case 111: { lexer.NextToken(); -#line 2827 "VBNET.ATG" +#line 2831 "VBNET.ATG" type = "Integer"; break; } case 117: { lexer.NextToken(); -#line 2828 "VBNET.ATG" +#line 2832 "VBNET.ATG" type = "Long"; break; } case 160: { lexer.NextToken(); -#line 2829 "VBNET.ATG" +#line 2833 "VBNET.ATG" type = "Single"; break; } case 84: { lexer.NextToken(); -#line 2830 "VBNET.ATG" +#line 2834 "VBNET.ATG" type = "Double"; break; } case 191: { lexer.NextToken(); -#line 2831 "VBNET.ATG" +#line 2835 "VBNET.ATG" type = "UInteger"; break; } case 192: { lexer.NextToken(); -#line 2832 "VBNET.ATG" +#line 2836 "VBNET.ATG" type = "ULong"; break; } case 193: { lexer.NextToken(); -#line 2833 "VBNET.ATG" +#line 2837 "VBNET.ATG" type = "UShort"; break; } case 190: { lexer.NextToken(); -#line 2834 "VBNET.ATG" +#line 2838 "VBNET.ATG" type = "SByte"; break; } @@ -4872,27 +4872,27 @@ out expr); } void ParameterModifier( -#line 2837 "VBNET.ATG" +#line 2841 "VBNET.ATG" ParamModifierList m) { if (la.kind == 55) { lexer.NextToken(); -#line 2838 "VBNET.ATG" +#line 2842 "VBNET.ATG" m.Add(ParameterModifiers.In); } else if (la.kind == 53) { lexer.NextToken(); -#line 2839 "VBNET.ATG" +#line 2843 "VBNET.ATG" m.Add(ParameterModifiers.Ref); } else if (la.kind == 137) { lexer.NextToken(); -#line 2840 "VBNET.ATG" +#line 2844 "VBNET.ATG" m.Add(ParameterModifiers.Optional); } else if (la.kind == 143) { lexer.NextToken(); -#line 2841 "VBNET.ATG" +#line 2845 "VBNET.ATG" m.Add(ParameterModifiers.Params); } else SynErr(251); } @@ -4943,21 +4943,21 @@ out stmt); } void LabelName( -#line 2616 "VBNET.ATG" +#line 2620 "VBNET.ATG" out string name) { -#line 2618 "VBNET.ATG" +#line 2622 "VBNET.ATG" name = String.Empty; if (StartOf(13)) { Identifier(); -#line 2620 "VBNET.ATG" +#line 2624 "VBNET.ATG" name = t.val; } else if (la.kind == 5) { lexer.NextToken(); -#line 2621 "VBNET.ATG" +#line 2625 "VBNET.ATG" name = t.val; } else SynErr(253); } @@ -5420,56 +5420,49 @@ out expr); if (la.kind == 170) { lexer.NextToken(); } - if ( -#line 2424 "VBNET.ATG" -IsEndStmtAhead()) { - Expect(88); - -#line 2424 "VBNET.ATG" - statement = new IfElseStatement(expr, new EndStatement()); statement.StartLocation = ifStartLocation; statement.EndLocation = t.Location; - } else if (la.kind == 1 || la.kind == 13) { + if (la.kind == 1 || la.kind == 13) { EndOfStmt(); Block( -#line 2427 "VBNET.ATG" +#line 2425 "VBNET.ATG" out embeddedStatement); -#line 2429 "VBNET.ATG" +#line 2427 "VBNET.ATG" IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement); ifStatement.StartLocation = ifStartLocation; Location elseIfStart; while (la.kind == 87 || -#line 2435 "VBNET.ATG" +#line 2433 "VBNET.ATG" IsElseIf()) { if ( -#line 2435 "VBNET.ATG" +#line 2433 "VBNET.ATG" IsElseIf()) { Expect(86); -#line 2435 "VBNET.ATG" +#line 2433 "VBNET.ATG" elseIfStart = t.Location; Expect(106); } else { lexer.NextToken(); -#line 2436 "VBNET.ATG" +#line 2434 "VBNET.ATG" elseIfStart = t.Location; } -#line 2438 "VBNET.ATG" +#line 2436 "VBNET.ATG" Expression condition = null; Statement block = null; Expr( -#line 2439 "VBNET.ATG" +#line 2437 "VBNET.ATG" out condition); if (la.kind == 170) { lexer.NextToken(); } EndOfStmt(); Block( -#line 2440 "VBNET.ATG" +#line 2438 "VBNET.ATG" out block); -#line 2442 "VBNET.ATG" +#line 2440 "VBNET.ATG" ElseIfSection elseIfSection = new ElseIfSection(condition, block); elseIfSection.StartLocation = elseIfStart; elseIfSection.EndLocation = t.Location; @@ -5481,62 +5474,40 @@ out block); lexer.NextToken(); EndOfStmt(); Block( -#line 2451 "VBNET.ATG" +#line 2449 "VBNET.ATG" out embeddedStatement); -#line 2453 "VBNET.ATG" +#line 2451 "VBNET.ATG" ifStatement.FalseStatement.Add(embeddedStatement); } Expect(88); Expect(106); -#line 2457 "VBNET.ATG" +#line 2455 "VBNET.ATG" ifStatement.EndLocation = t.Location; statement = ifStatement; - } else if (StartOf(34)) { - EmbeddedStatement( -#line 2461 "VBNET.ATG" -out embeddedStatement); + } else if (StartOf(36)) { -#line 2463 "VBNET.ATG" - IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement); +#line 2460 "VBNET.ATG" + IfElseStatement ifStatement = new IfElseStatement(expr); ifStatement.StartLocation = ifStartLocation; - while (la.kind == 13) { - lexer.NextToken(); - EmbeddedStatement( -#line 2466 "VBNET.ATG" -out embeddedStatement); - -#line 2466 "VBNET.ATG" - ifStatement.TrueStatement.Add(embeddedStatement); - } + SingleLineStatementList( +#line 2463 "VBNET.ATG" +ifStatement.TrueStatement); if (la.kind == 86) { lexer.NextToken(); - if (StartOf(34)) { - EmbeddedStatement( -#line 2468 "VBNET.ATG" -out embeddedStatement); - } - -#line 2470 "VBNET.ATG" - ifStatement.FalseStatement.Add(embeddedStatement); - - while (la.kind == 13) { - lexer.NextToken(); - EmbeddedStatement( -#line 2473 "VBNET.ATG" -out embeddedStatement); - -#line 2474 "VBNET.ATG" - ifStatement.FalseStatement.Add(embeddedStatement); + if (StartOf(36)) { + SingleLineStatementList( +#line 2466 "VBNET.ATG" +ifStatement.FalseStatement); } } -#line 2477 "VBNET.ATG" - ifStatement.EndLocation = ifStartLocation; statement = ifStatement; +#line 2468 "VBNET.ATG" + ifStatement.EndLocation = t.Location; statement = ifStatement; } else SynErr(257); break; } @@ -5546,45 +5517,45 @@ out embeddedStatement); lexer.NextToken(); } Expr( -#line 2480 "VBNET.ATG" +#line 2471 "VBNET.ATG" out expr); EndOfStmt(); -#line 2481 "VBNET.ATG" +#line 2472 "VBNET.ATG" List selectSections = new List(); Statement block = null; while (la.kind == 57) { -#line 2485 "VBNET.ATG" +#line 2476 "VBNET.ATG" List caseClauses = null; Location caseLocation = la.Location; lexer.NextToken(); CaseClauses( -#line 2486 "VBNET.ATG" +#line 2477 "VBNET.ATG" out caseClauses); if ( -#line 2486 "VBNET.ATG" +#line 2477 "VBNET.ATG" IsNotStatementSeparator()) { lexer.NextToken(); } EndOfStmt(); -#line 2488 "VBNET.ATG" +#line 2479 "VBNET.ATG" SwitchSection selectSection = new SwitchSection(caseClauses); selectSection.StartLocation = caseLocation; Block( -#line 2491 "VBNET.ATG" +#line 2482 "VBNET.ATG" out block); -#line 2493 "VBNET.ATG" +#line 2484 "VBNET.ATG" selectSection.Children = block.Children; selectSection.EndLocation = t.EndLocation; selectSections.Add(selectSection); } -#line 2498 "VBNET.ATG" +#line 2489 "VBNET.ATG" statement = new SwitchStatement(expr, selectSections); Expect(88); Expect(155); @@ -5592,43 +5563,43 @@ out block); } case 135: { -#line 2500 "VBNET.ATG" +#line 2491 "VBNET.ATG" OnErrorStatement onErrorStatement = null; OnErrorStatement( -#line 2501 "VBNET.ATG" +#line 2492 "VBNET.ATG" out onErrorStatement); -#line 2501 "VBNET.ATG" +#line 2492 "VBNET.ATG" statement = onErrorStatement; break; } case 104: { -#line 2502 "VBNET.ATG" +#line 2493 "VBNET.ATG" GotoStatement goToStatement = null; GotoStatement( -#line 2503 "VBNET.ATG" +#line 2494 "VBNET.ATG" out goToStatement); -#line 2503 "VBNET.ATG" +#line 2494 "VBNET.ATG" statement = goToStatement; break; } case 153: { -#line 2504 "VBNET.ATG" +#line 2495 "VBNET.ATG" ResumeStatement resumeStatement = null; ResumeStatement( -#line 2505 "VBNET.ATG" +#line 2496 "VBNET.ATG" out resumeStatement); -#line 2505 "VBNET.ATG" +#line 2496 "VBNET.ATG" statement = resumeStatement; break; } case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 24: case 43: case 47: case 49: case 50: case 51: case 52: case 54: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 68: case 69: case 70: case 72: case 73: case 74: case 75: case 76: case 77: case 82: case 84: case 95: case 96: case 102: case 111: case 117: case 119: case 124: case 125: case 127: case 130: case 133: case 134: case 144: case 159: case 160: case 165: case 169: case 173: case 175: case 176: case 177: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 204: { -#line 2508 "VBNET.ATG" +#line 2499 "VBNET.ATG" Expression val = null; AssignmentOperatorType op; @@ -5636,25 +5607,25 @@ out resumeStatement); la.kind == Tokens.Not || la.kind == Tokens.Times; SimpleExpr( -#line 2514 "VBNET.ATG" +#line 2505 "VBNET.ATG" out expr); - if (StartOf(36)) { + if (StartOf(37)) { AssignmentOperator( -#line 2516 "VBNET.ATG" +#line 2507 "VBNET.ATG" out op); Expr( -#line 2516 "VBNET.ATG" +#line 2507 "VBNET.ATG" out val); -#line 2516 "VBNET.ATG" +#line 2507 "VBNET.ATG" expr = new AssignmentExpression(expr, op, val); } else if (la.kind == 1 || la.kind == 13 || la.kind == 86) { -#line 2517 "VBNET.ATG" +#line 2508 "VBNET.ATG" if (mustBeAssignment) Error("error in assignment."); } else SynErr(258); -#line 2520 "VBNET.ATG" +#line 2511 "VBNET.ATG" // a field reference expression that stands alone is a // invocation expression without parantheses and arguments if(expr is FieldReferenceExpression || expr is IdentifierExpression) { @@ -5667,48 +5638,48 @@ out val); case 56: { lexer.NextToken(); SimpleExpr( -#line 2527 "VBNET.ATG" +#line 2518 "VBNET.ATG" out expr); -#line 2527 "VBNET.ATG" +#line 2518 "VBNET.ATG" statement = new ExpressionStatement(expr); break; } case 188: { lexer.NextToken(); -#line 2529 "VBNET.ATG" +#line 2520 "VBNET.ATG" Statement block; if ( -#line 2530 "VBNET.ATG" +#line 2521 "VBNET.ATG" Peek(1).kind == Tokens.As) { -#line 2531 "VBNET.ATG" +#line 2522 "VBNET.ATG" LocalVariableDeclaration resourceAquisition = new LocalVariableDeclaration(Modifiers.None); VariableDeclarator( -#line 2532 "VBNET.ATG" +#line 2523 "VBNET.ATG" resourceAquisition.Variables); while (la.kind == 12) { lexer.NextToken(); VariableDeclarator( -#line 2534 "VBNET.ATG" +#line 2525 "VBNET.ATG" resourceAquisition.Variables); } Block( -#line 2536 "VBNET.ATG" +#line 2527 "VBNET.ATG" out block); -#line 2537 "VBNET.ATG" +#line 2528 "VBNET.ATG" statement = new UsingStatement(resourceAquisition, block); } else if (StartOf(27)) { Expr( -#line 2538 "VBNET.ATG" +#line 2529 "VBNET.ATG" out expr); Block( -#line 2539 "VBNET.ATG" +#line 2530 "VBNET.ATG" out block); -#line 2540 "VBNET.ATG" +#line 2531 "VBNET.ATG" statement = new UsingStatement(new ExpressionStatement(expr), block); } else SynErr(259); Expect(88); @@ -5775,120 +5746,120 @@ localVariableDeclaration.Variables); } void TryStatement( -#line 2730 "VBNET.ATG" +#line 2734 "VBNET.ATG" out Statement tryStatement) { -#line 2732 "VBNET.ATG" +#line 2736 "VBNET.ATG" Statement blockStmt = null, finallyStmt = null;List catchClauses = null; Expect(174); EndOfStmt(); Block( -#line 2735 "VBNET.ATG" +#line 2739 "VBNET.ATG" out blockStmt); if (la.kind == 58 || la.kind == 88 || la.kind == 97) { CatchClauses( -#line 2736 "VBNET.ATG" +#line 2740 "VBNET.ATG" out catchClauses); } if (la.kind == 97) { lexer.NextToken(); EndOfStmt(); Block( -#line 2737 "VBNET.ATG" +#line 2741 "VBNET.ATG" out finallyStmt); } Expect(88); Expect(174); -#line 2740 "VBNET.ATG" +#line 2744 "VBNET.ATG" tryStatement = new TryCatchStatement(blockStmt, catchClauses, finallyStmt); } void WithStatement( -#line 2710 "VBNET.ATG" +#line 2714 "VBNET.ATG" out Statement withStatement) { -#line 2712 "VBNET.ATG" +#line 2716 "VBNET.ATG" Statement blockStmt = null; Expression expr = null; Expect(182); -#line 2715 "VBNET.ATG" +#line 2719 "VBNET.ATG" Location start = t.Location; Expr( -#line 2716 "VBNET.ATG" +#line 2720 "VBNET.ATG" out expr); EndOfStmt(); -#line 2718 "VBNET.ATG" +#line 2722 "VBNET.ATG" withStatement = new WithStatement(expr); withStatement.StartLocation = start; Block( -#line 2721 "VBNET.ATG" +#line 2725 "VBNET.ATG" out blockStmt); -#line 2723 "VBNET.ATG" +#line 2727 "VBNET.ATG" ((WithStatement)withStatement).Body = (BlockStatement)blockStmt; Expect(88); Expect(182); -#line 2726 "VBNET.ATG" +#line 2730 "VBNET.ATG" withStatement.EndLocation = t.Location; } void WhileOrUntil( -#line 2703 "VBNET.ATG" +#line 2707 "VBNET.ATG" out ConditionType conditionType) { -#line 2704 "VBNET.ATG" +#line 2708 "VBNET.ATG" conditionType = ConditionType.None; if (la.kind == 181) { lexer.NextToken(); -#line 2705 "VBNET.ATG" +#line 2709 "VBNET.ATG" conditionType = ConditionType.While; } else if (la.kind == 177) { lexer.NextToken(); -#line 2706 "VBNET.ATG" +#line 2710 "VBNET.ATG" conditionType = ConditionType.Until; } else SynErr(261); } void LoopControlVariable( -#line 2546 "VBNET.ATG" +#line 2550 "VBNET.ATG" out TypeReference type, out string name) { -#line 2547 "VBNET.ATG" +#line 2551 "VBNET.ATG" ArrayList arrayModifiers = null; type = null; Qualident( -#line 2551 "VBNET.ATG" +#line 2555 "VBNET.ATG" out name); if ( -#line 2552 "VBNET.ATG" +#line 2556 "VBNET.ATG" IsDims()) { ArrayTypeModifiers( -#line 2552 "VBNET.ATG" +#line 2556 "VBNET.ATG" out arrayModifiers); } if (la.kind == 48) { lexer.NextToken(); TypeName( -#line 2553 "VBNET.ATG" +#line 2557 "VBNET.ATG" out type); -#line 2553 "VBNET.ATG" +#line 2557 "VBNET.ATG" if (name.IndexOf('.') > 0) { Error("No type def for 'for each' member indexer allowed."); } } -#line 2555 "VBNET.ATG" +#line 2559 "VBNET.ATG" if (type != null) { if(type.RankSpecifier != null && arrayModifiers != null) { Error("array rank only allowed one time"); @@ -5900,59 +5871,99 @@ out type); } void ReDimClause( -#line 2625 "VBNET.ATG" +#line 2629 "VBNET.ATG" out Expression expr) { SimpleNonInvocationExpression( -#line 2627 "VBNET.ATG" +#line 2631 "VBNET.ATG" out expr); ReDimClauseInternal( -#line 2628 "VBNET.ATG" +#line 2632 "VBNET.ATG" ref expr); } + void SingleLineStatementList( +#line 2536 "VBNET.ATG" +List list) { + +#line 2537 "VBNET.ATG" + Statement embeddedStatement = null; + if (la.kind == 88) { + lexer.NextToken(); + +#line 2539 "VBNET.ATG" + embeddedStatement = new EndStatement(); + } else if (StartOf(34)) { + EmbeddedStatement( +#line 2540 "VBNET.ATG" +out embeddedStatement); + } else SynErr(262); + +#line 2541 "VBNET.ATG" + if (embeddedStatement != null) list.Add(embeddedStatement); + while (la.kind == 13) { + lexer.NextToken(); + while (la.kind == 13) { + lexer.NextToken(); + } + if (la.kind == 88) { + lexer.NextToken(); + +#line 2543 "VBNET.ATG" + embeddedStatement = new EndStatement(); + } else if (StartOf(34)) { + EmbeddedStatement( +#line 2544 "VBNET.ATG" +out embeddedStatement); + } else SynErr(263); + +#line 2545 "VBNET.ATG" + if (embeddedStatement != null) list.Add(embeddedStatement); + } + } + void CaseClauses( -#line 2663 "VBNET.ATG" +#line 2667 "VBNET.ATG" out List caseClauses) { -#line 2665 "VBNET.ATG" +#line 2669 "VBNET.ATG" caseClauses = new List(); CaseLabel caseClause = null; CaseClause( -#line 2668 "VBNET.ATG" +#line 2672 "VBNET.ATG" out caseClause); -#line 2668 "VBNET.ATG" +#line 2672 "VBNET.ATG" if (caseClause != null) { caseClauses.Add(caseClause); } while (la.kind == 12) { lexer.NextToken(); CaseClause( -#line 2669 "VBNET.ATG" +#line 2673 "VBNET.ATG" out caseClause); -#line 2669 "VBNET.ATG" +#line 2673 "VBNET.ATG" if (caseClause != null) { caseClauses.Add(caseClause); } } } void OnErrorStatement( -#line 2566 "VBNET.ATG" +#line 2570 "VBNET.ATG" out OnErrorStatement stmt) { -#line 2568 "VBNET.ATG" +#line 2572 "VBNET.ATG" stmt = null; GotoStatement goToStatement = null; Expect(135); Expect(92); if ( -#line 2574 "VBNET.ATG" +#line 2578 "VBNET.ATG" IsNegativeLabelName()) { Expect(104); Expect(15); Expect(5); -#line 2576 "VBNET.ATG" +#line 2580 "VBNET.ATG" long intLabel = Int64.Parse(t.val); if(intLabel != 1) { Error("invalid label in on error statement."); @@ -5961,10 +5972,10 @@ IsNegativeLabelName()) { } else if (la.kind == 104) { GotoStatement( -#line 2582 "VBNET.ATG" +#line 2586 "VBNET.ATG" out goToStatement); -#line 2584 "VBNET.ATG" +#line 2588 "VBNET.ATG" string val = goToStatement.Label; // if value is numeric, make sure that is 0 @@ -5981,88 +5992,88 @@ out goToStatement); lexer.NextToken(); Expect(128); -#line 2598 "VBNET.ATG" +#line 2602 "VBNET.ATG" stmt = new OnErrorStatement(new ResumeStatement(true)); - } else SynErr(262); + } else SynErr(264); } void GotoStatement( -#line 2604 "VBNET.ATG" +#line 2608 "VBNET.ATG" out GotoStatement goToStatement) { -#line 2606 "VBNET.ATG" +#line 2610 "VBNET.ATG" string label = String.Empty; Expect(104); LabelName( -#line 2609 "VBNET.ATG" +#line 2613 "VBNET.ATG" out label); -#line 2611 "VBNET.ATG" +#line 2615 "VBNET.ATG" goToStatement = new GotoStatement(label); } void ResumeStatement( -#line 2652 "VBNET.ATG" +#line 2656 "VBNET.ATG" out ResumeStatement resumeStatement) { -#line 2654 "VBNET.ATG" +#line 2658 "VBNET.ATG" resumeStatement = null; string label = String.Empty; if ( -#line 2657 "VBNET.ATG" +#line 2661 "VBNET.ATG" IsResumeNext()) { Expect(153); Expect(128); -#line 2658 "VBNET.ATG" +#line 2662 "VBNET.ATG" resumeStatement = new ResumeStatement(true); } else if (la.kind == 153) { lexer.NextToken(); - if (StartOf(37)) { + if (StartOf(38)) { LabelName( -#line 2659 "VBNET.ATG" +#line 2663 "VBNET.ATG" out label); } -#line 2659 "VBNET.ATG" +#line 2663 "VBNET.ATG" resumeStatement = new ResumeStatement(label); - } else SynErr(263); + } else SynErr(265); } void ReDimClauseInternal( -#line 2631 "VBNET.ATG" +#line 2635 "VBNET.ATG" ref Expression expr) { -#line 2632 "VBNET.ATG" +#line 2636 "VBNET.ATG" List arguments; bool canBeNormal; bool canBeRedim; string name; while (la.kind == 10 || -#line 2635 "VBNET.ATG" +#line 2639 "VBNET.ATG" la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) { if (la.kind == 10) { lexer.NextToken(); IdentifierOrKeyword( -#line 2634 "VBNET.ATG" +#line 2638 "VBNET.ATG" out name); -#line 2634 "VBNET.ATG" +#line 2638 "VBNET.ATG" expr = new FieldReferenceExpression(expr, name); } else { InvocationExpression( -#line 2636 "VBNET.ATG" +#line 2640 "VBNET.ATG" ref expr); } } Expect(24); NormalOrReDimArgumentList( -#line 2639 "VBNET.ATG" +#line 2643 "VBNET.ATG" out arguments, out canBeNormal, out canBeRedim); Expect(25); -#line 2641 "VBNET.ATG" +#line 2645 "VBNET.ATG" expr = new InvocationExpression(expr, arguments); if (canBeRedim == false || canBeNormal && (la.kind == Tokens.Dot || la.kind == Tokens.OpenParenthesis)) { if (this.Errors.Count == 0) { @@ -6074,10 +6085,10 @@ out arguments, out canBeNormal, out canBeRedim); } void CaseClause( -#line 2673 "VBNET.ATG" +#line 2677 "VBNET.ATG" out CaseLabel caseClause) { -#line 2675 "VBNET.ATG" +#line 2679 "VBNET.ATG" Expression expr = null; Expression sexpr = null; BinaryOperatorType op = BinaryOperatorType.None; @@ -6086,9 +6097,9 @@ out CaseLabel caseClause) { if (la.kind == 86) { lexer.NextToken(); -#line 2681 "VBNET.ATG" +#line 2685 "VBNET.ATG" caseClause = new CaseLabel(); - } else if (StartOf(38)) { + } else if (StartOf(39)) { if (la.kind == 113) { lexer.NextToken(); } @@ -6096,76 +6107,76 @@ out CaseLabel caseClause) { case 27: { lexer.NextToken(); -#line 2685 "VBNET.ATG" +#line 2689 "VBNET.ATG" op = BinaryOperatorType.LessThan; break; } case 26: { lexer.NextToken(); -#line 2686 "VBNET.ATG" +#line 2690 "VBNET.ATG" op = BinaryOperatorType.GreaterThan; break; } case 30: { lexer.NextToken(); -#line 2687 "VBNET.ATG" +#line 2691 "VBNET.ATG" op = BinaryOperatorType.LessThanOrEqual; break; } case 29: { lexer.NextToken(); -#line 2688 "VBNET.ATG" +#line 2692 "VBNET.ATG" op = BinaryOperatorType.GreaterThanOrEqual; break; } case 11: { lexer.NextToken(); -#line 2689 "VBNET.ATG" +#line 2693 "VBNET.ATG" op = BinaryOperatorType.Equality; break; } case 28: { lexer.NextToken(); -#line 2690 "VBNET.ATG" +#line 2694 "VBNET.ATG" op = BinaryOperatorType.InEquality; break; } - default: SynErr(264); break; + default: SynErr(266); break; } Expr( -#line 2692 "VBNET.ATG" +#line 2696 "VBNET.ATG" out expr); -#line 2694 "VBNET.ATG" +#line 2698 "VBNET.ATG" caseClause = new CaseLabel(op, expr); } else if (StartOf(27)) { Expr( -#line 2696 "VBNET.ATG" +#line 2700 "VBNET.ATG" out expr); if (la.kind == 172) { lexer.NextToken(); Expr( -#line 2696 "VBNET.ATG" +#line 2700 "VBNET.ATG" out sexpr); } -#line 2698 "VBNET.ATG" +#line 2702 "VBNET.ATG" caseClause = new CaseLabel(expr, sexpr); - } else SynErr(265); + } else SynErr(267); } void CatchClauses( -#line 2745 "VBNET.ATG" +#line 2749 "VBNET.ATG" out List catchClauses) { -#line 2747 "VBNET.ATG" +#line 2751 "VBNET.ATG" catchClauses = new List(); TypeReference type = null; Statement blockStmt = null; @@ -6177,27 +6188,27 @@ out List catchClauses) { if (StartOf(13)) { Identifier(); -#line 2755 "VBNET.ATG" +#line 2759 "VBNET.ATG" name = t.val; if (la.kind == 48) { lexer.NextToken(); TypeName( -#line 2755 "VBNET.ATG" +#line 2759 "VBNET.ATG" out type); } } if (la.kind == 180) { lexer.NextToken(); Expr( -#line 2756 "VBNET.ATG" +#line 2760 "VBNET.ATG" out expr); } EndOfStmt(); Block( -#line 2758 "VBNET.ATG" +#line 2762 "VBNET.ATG" out blockStmt); -#line 2759 "VBNET.ATG" +#line 2763 "VBNET.ATG" catchClauses.Add(new CatchClause(type, name, blockStmt, expr)); } } @@ -6476,10 +6487,12 @@ out blockStmt); case 259: s = "invalid EmbeddedStatement"; break; case 260: s = "invalid EmbeddedStatement"; break; case 261: s = "invalid WhileOrUntil"; break; - case 262: s = "invalid OnErrorStatement"; break; - case 263: s = "invalid ResumeStatement"; break; - case 264: s = "invalid CaseClause"; break; - case 265: s = "invalid CaseClause"; break; + case 262: s = "invalid SingleLineStatementList"; break; + case 263: s = "invalid SingleLineStatementList"; break; + case 264: s = "invalid OnErrorStatement"; break; + case 265: s = "invalid ResumeStatement"; break; + case 266: s = "invalid CaseClause"; break; + case 267: s = "invalid CaseClause"; break; default: s = "error " + errorNumber; break; } @@ -6528,6 +6541,7 @@ out blockStmt); {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x}, {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,T,T,T, T,x,T,x, T,x,x,T, T,T,T,T, T,T,T,x, T,T,T,x, T,T,T,T, T,T,x,x, x,x,T,T, T,x,x,x, x,x,x,T, T,x,T,T, T,x,T,x, x,x,T,x, T,x,T,x, x,x,x,T, x,x,x,x, x,T,x,T, x,x,x,x, T,T,x,T, x,x,T,x, x,T,T,T, x,x,x,x, x,x,x,x, T,x,x,x, x,T,x,T, T,T,T,T, x,x,x,T, T,x,x,T, x,T,x,x, T,T,x,T, x,T,T,T, T,T,x,x, x,T,T,x, x,x,T,x, T,x,T,T, T,T,T,T, T,T,T,T, x,x,x,x, T,x,x}, {x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,T,T,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,T,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x}, + {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,T,T,T, T,x,T,x, T,x,x,T, T,T,T,T, T,T,T,x, T,T,T,x, T,T,T,T, T,T,x,x, x,x,T,T, T,x,x,x, T,x,x,T, T,x,T,T, T,x,T,x, x,x,T,x, T,x,T,x, x,x,x,T, x,x,x,x, x,T,x,T, x,x,x,x, T,T,x,T, x,x,T,x, x,T,T,T, x,x,x,x, x,x,x,x, T,x,x,x, x,T,x,T, T,T,T,T, x,x,x,T, T,x,x,T, x,T,x,x, T,T,x,T, x,T,T,T, T,T,x,x, x,T,T,x, x,x,T,x, T,x,T,T, T,T,T,T, T,T,T,T, x,x,x,x, T,x,x}, {x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,T,T, T,T,T,T, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x}, {x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,T,T,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x}, {x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, T,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x} diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG index c767979c25..361e2a5f64 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG +++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG @@ -2421,8 +2421,6 @@ EmbeddedStatement | /* 10.8.1 */ "If" (. Location ifStartLocation = t.Location; .) Expr [ "Then" ] ( - IF (IsEndStmtAhead()) "End" (. statement = new IfElseStatement(expr, new EndStatement()); statement.StartLocation = ifStartLocation; statement.EndLocation = t.Location; .) - | /* multiline if statement */ EndOfStmt Block (. @@ -2457,24 +2455,17 @@ EmbeddedStatement ifStatement.EndLocation = t.Location; statement = ifStatement; .) - | /* singleline if statement */ - EmbeddedStatement + | /* singleline if statement */ (. - IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement); + IfElseStatement ifStatement = new IfElseStatement(expr); ifStatement.StartLocation = ifStartLocation; .) - { ":" EmbeddedStatement (. ifStatement.TrueStatement.Add(embeddedStatement); .) } + SingleLineStatementList [ - "Else" [ EmbeddedStatement ] - (. - ifStatement.FalseStatement.Add(embeddedStatement); - .) - { - ":" EmbeddedStatement - (. ifStatement.FalseStatement.Add(embeddedStatement); .) - } + "Else" + [ SingleLineStatementList ] ] - (. ifStatement.EndLocation = ifStartLocation; statement = ifStatement; .) + (. ifStatement.EndLocation = t.Location; statement = ifStatement; .) ) | /* 10.8.2 */ "Select" [ "Case" ] Expr EndOfStmt @@ -2542,6 +2533,19 @@ EmbeddedStatement "End" "Using" . +SingleLineStatementList list> +(. Statement embeddedStatement = null; .) += + ( "End" (. embeddedStatement = new EndStatement(); .) + | EmbeddedStatement ) + (. if (embeddedStatement != null) list.Add(embeddedStatement); .) + { ":" { ":" } + ( "End" (. embeddedStatement = new EndStatement(); .) + | EmbeddedStatement ) + (. if (embeddedStatement != null) list.Add(embeddedStatement); .) + } +. + /* 10.9.2 */ LoopControlVariable (.ArrayList arrayModifiers = null; diff --git a/src/Libraries/NRefactory/Test/Parser/Statements/IfElseStatementTests.cs b/src/Libraries/NRefactory/Test/Parser/Statements/IfElseStatementTests.cs index a606c3cfba..cbb7e7fb81 100644 --- a/src/Libraries/NRefactory/Test/Parser/Statements/IfElseStatementTests.cs +++ b/src/Libraries/NRefactory/Test/Parser/Statements/IfElseStatementTests.cs @@ -130,6 +130,47 @@ namespace ICSharpCode.NRefactory.Tests.Ast Assert.IsTrue(ifElseStatement.TrueStatement[0] is BlockStatement, "Statement was: " + ifElseStatement.TrueStatement[0]); Assert.IsTrue(ifElseStatement.ElseIfSections[0].EmbeddedStatement.Children[0] is StopStatement, "Statement was: " + ifElseStatement.ElseIfSections[0].EmbeddedStatement.Children[0]); } + [Test] + public void VBNetMultiStatementIfStatementTest() + { + IfElseStatement ifElseStatement = ParseUtilVBNet.ParseStatement("If True THEN Stop : b"); + Assert.IsFalse(ifElseStatement.Condition.IsNull); + Assert.AreEqual(2, ifElseStatement.TrueStatement.Count, "true count"); + Assert.AreEqual(0, ifElseStatement.FalseStatement.Count, "false count"); + + Assert.IsTrue(ifElseStatement.TrueStatement[0] is StopStatement); + Assert.IsTrue(ifElseStatement.TrueStatement[1] is ExpressionStatement); + } + [Test] + public void VBNetMultiStatementIfStatementWithEndStatementTest() + { + IfElseStatement ifElseStatement = ParseUtilVBNet.ParseStatement("If True THEN Stop : End : b"); + Assert.IsFalse(ifElseStatement.Condition.IsNull); + Assert.AreEqual(3, ifElseStatement.TrueStatement.Count, "true count"); + Assert.AreEqual(0, ifElseStatement.FalseStatement.Count, "false count"); + + Assert.IsTrue(ifElseStatement.TrueStatement[0] is StopStatement); + Assert.IsTrue(ifElseStatement.TrueStatement[1] is EndStatement); + Assert.IsTrue(ifElseStatement.TrueStatement[2] is ExpressionStatement); + } + + [Test] + public void VBNetIfWithEmptyElseTest() + { + IfElseStatement ifElseStatement = ParseUtilVBNet.ParseStatement("If True THEN a Else"); + Assert.IsFalse(ifElseStatement.Condition.IsNull); + Assert.AreEqual(1, ifElseStatement.TrueStatement.Count, "true count"); + Assert.AreEqual(0, ifElseStatement.FalseStatement.Count, "false count"); + } + + [Test] + public void VBNetIfWithMultipleColons() + { + IfElseStatement ifElseStatement = ParseUtilVBNet.ParseStatement("If True THEN a : : b"); + Assert.IsFalse(ifElseStatement.Condition.IsNull); + Assert.AreEqual(2, ifElseStatement.TrueStatement.Count, "true count"); + Assert.AreEqual(0, ifElseStatement.FalseStatement.Count, "false count"); + } #endregion } } diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs index 2fc129baf5..c03245f91b 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs @@ -142,10 +142,12 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates void LoadProjectItems(XmlElement projectItemsElement) { + bool escapeIncludeValue = String.Equals(projectItemsElement.GetAttribute("escapeValue"), "false", StringComparison.OrdinalIgnoreCase); foreach (XmlElement projectItemElement in ChildElements(projectItemsElement)) { ProjectItem item = new UnknownProjectItem(null, projectItemElement.Name, - projectItemElement.GetAttribute("Include")); + projectItemElement.GetAttribute("Include"), + escapeIncludeValue); foreach (XmlElement metadataElement in ChildElements(projectItemElement)) { item.SetMetadata(metadataElement.Name, metadataElement.InnerText); } diff --git a/src/Main/Base/Project/Src/Project/CompilableProject.cs b/src/Main/Base/Project/Src/Project/CompilableProject.cs index cf4cf91122..8df79fe148 100644 --- a/src/Main/Base/Project/Src/Project/CompilableProject.cs +++ b/src/Main/Base/Project/Src/Project/CompilableProject.cs @@ -91,6 +91,11 @@ namespace ICSharpCode.SharpDevelop.Project PropertyStorageLocations.ConfigurationSpecific, true); SetProperty("Release", null, "DebugType", "None", PropertyStorageLocations.ConfigurationSpecific, true); + + SetProperty("Debug", null, "Optimize", "False", + PropertyStorageLocations.ConfigurationSpecific, true); + SetProperty("Release", null, "Optimize", "True", + PropertyStorageLocations.ConfigurationSpecific, true); } /// diff --git a/src/Main/Base/Project/Src/Project/Items/ProjectItem.cs b/src/Main/Base/Project/Src/Project/Items/ProjectItem.cs index e3f325765c..91328ab108 100644 --- a/src/Main/Base/Project/Src/Project/Items/ProjectItem.cs +++ b/src/Main/Base/Project/Src/Project/Items/ProjectItem.cs @@ -31,6 +31,7 @@ namespace ICSharpCode.SharpDevelop.Project { IProject project; volatile string fileNameCache; + bool treatIncludeAsLiteral; // either use: (bound mode) BuildItem buildItem; @@ -46,6 +47,7 @@ namespace ICSharpCode.SharpDevelop.Project throw new ArgumentNullException("project"); this.project = project; this.buildItem = buildItem; + this.treatIncludeAsLiteral = true; } protected ProjectItem(IProject project, ItemType itemType) @@ -54,11 +56,17 @@ namespace ICSharpCode.SharpDevelop.Project } protected ProjectItem(IProject project, ItemType itemType, string include) + : this(project, itemType, include, true) + { + } + + protected ProjectItem(IProject project, ItemType itemType, string include, bool treatIncludeAsLiteral) { this.project = project; this.virtualItemType = itemType; this.virtualInclude = include ?? ""; this.virtualMetadata = new Dictionary(); + this.treatIncludeAsLiteral = treatIncludeAsLiteral; } [Browsable(false)] @@ -68,6 +76,12 @@ namespace ICSharpCode.SharpDevelop.Project } } + [Browsable(false)] + public bool TreatIncludeAsLiteral { + get { return treatIncludeAsLiteral; } + set { treatIncludeAsLiteral = value; } + } + /// /// Gets the object used for synchronization. This is project.SyncRoot for items inside a project; or /// virtualMetadata for items without project. diff --git a/src/Main/Base/Project/Src/Project/Items/UnknownProjectItem.cs b/src/Main/Base/Project/Src/Project/Items/UnknownProjectItem.cs index 1a06991800..b09d120ab1 100644 --- a/src/Main/Base/Project/Src/Project/Items/UnknownProjectItem.cs +++ b/src/Main/Base/Project/Src/Project/Items/UnknownProjectItem.cs @@ -23,8 +23,16 @@ namespace ICSharpCode.SharpDevelop.Project /// Constructor for internal use in ProjectDescriptor. /// internal UnknownProjectItem(IProject project, string itemType, string include) - : base(project, new ItemType(itemType), include) + : this(project, itemType, include, false) { } + + /// + /// Constructor for internal use in ProjectDescriptor. + /// + internal UnknownProjectItem(IProject project, string itemType, string include, bool treatIncludeAsLiteral) + : base(project, new ItemType(itemType), include, treatIncludeAsLiteral) + { + } } } diff --git a/src/Main/Base/Project/Src/Project/MSBuildInternals.cs b/src/Main/Base/Project/Src/Project/MSBuildInternals.cs index 72775f2a92..f5f573ca02 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildInternals.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildInternals.cs @@ -75,7 +75,7 @@ namespace ICSharpCode.SharpDevelop.Project throw new ArgumentNullException("item"); if (item.IsAddedToProject) throw new ArgumentException("item is already added to project", "item"); - MSBuild.BuildItem newItem = group.AddNewItem(item.ItemType.ToString(), item.Include, true); + MSBuild.BuildItem newItem = group.AddNewItem(item.ItemType.ToString(), item.Include, item.TreatIncludeAsLiteral); foreach (string name in item.MetadataNames) { newItem.SetMetadata(name, item.GetMetadata(name)); } @@ -122,6 +122,9 @@ namespace ICSharpCode.SharpDevelop.Project try { MSBuild.Engine engine = CreateEngine(); tempProject = engine.CreateNewProject(); + // tell MSBuild the path so that projects containing + // can be loaded + tempProject.FullFileName = baseProject.FullFileName; MSBuildBasedProject.InitializeMSBuildProject(tempProject); tempProject.LoadXml(baseProject.Xml); tempProject.SetProperty("Configuration", configuration); diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs index 71c2520b5a..e7bb7585a6 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs @@ -160,7 +160,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor string ToStringInternal() { IAmbience ambience = AmbienceService.CurrentAmbience; - ambience.ConversionFlags = ConversionFlags.ShowParameterNames; + ambience.ConversionFlags = ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames; if (item is IMethod) { return ambience.Convert((IMethod)item); } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs index 789914ba00..bb3b74d3ea 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs @@ -314,7 +314,7 @@ namespace ICSharpCode.SharpDevelop.Dom // add default .NET assemblies to redirected assemblies (both when loaded from persistence // and when loaded using Reflection) lock (redirectedAssemblyNames) { - redirectedAssemblyNames.Add(shortName, pc.AssemblyFullName); + redirectedAssemblyNames[shortName] = pc.AssemblyFullName; } } } else { @@ -404,3 +404,4 @@ namespace ICSharpCode.SharpDevelop.Dom } } } + diff --git a/src/Setup/Files.wxs b/src/Setup/Files.wxs index 52b180d9dd..390e764631 100644 --- a/src/Setup/Files.wxs +++ b/src/Setup/Files.wxs @@ -306,7 +306,7 @@ - + @@ -943,6 +943,18 @@ + + + + + + + + + + + + diff --git a/src/Setup/Setup.wxs b/src/Setup/Setup.wxs index 16e9694e44..31bd3a87d4 100644 --- a/src/Setup/Setup.wxs +++ b/src/Setup/Setup.wxs @@ -300,6 +300,10 @@ + + + +