Browse Source

Fixed SD2-564: Code always generated for c#.

Fixed VB parser bug ("Dim lDrives() As DriveInfo")

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@776 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
b8720c2bac
  1. 6
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooParser.cs
  2. 6
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs
  3. 4
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/TextEditorOptions.cs
  4. 33
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs
  5. 6
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/Parser.cs
  6. 2
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/DynamicTreeDebuggerRow.cs
  7. 4
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger-StateControl.cs
  8. 8
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Ime.cs
  9. 1372
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  10. 91
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  11. 13
      src/Libraries/NRefactory/Test/Parser/Statements/LocalVariableDeclarationTests.cs
  12. 4
      src/Main/Base/Project/Src/Dom/IParser.cs
  13. 22
      src/Main/Base/Project/Src/Dom/LanguageProperties.cs
  14. 50
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  15. 2
      src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OverridePropertiesCodeGenerator.cs
  16. 10
      src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/ExportProjectToHtmlDialog.cs
  17. 7
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanel.cs

6
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooParser.cs

@ -33,6 +33,12 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -33,6 +33,12 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
public LanguageProperties Language {
get {
return BooLanguageProperties.Instance;
}
}
public IExpressionFinder CreateExpressionFinder(string fileName)
{
return new ExpressionFinder(fileName);

6
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs

@ -32,6 +32,12 @@ namespace CSharpBinding.Parser @@ -32,6 +32,12 @@ namespace CSharpBinding.Parser
}
}
public LanguageProperties Language {
get {
return LanguageProperties.CSharp;
}
}
public IExpressionFinder CreateExpressionFinder(string fileName)
{
return new ExpressionFinder(fileName);

4
src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/TextEditorOptions.cs

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Markus Palme" email="markuspalme@gmx.de"/>
// <version>$Revision: 230 $</version>
// <owner name="Markus Palme" email="MarkusPalme@gmx.de"/>
// <version>$Revision$</version>
// </file>
using System;

33
src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs

@ -22,34 +22,37 @@ namespace VBNetBinding.Parser @@ -22,34 +22,37 @@ namespace VBNetBinding.Parser
{
///<summary>IParser Interface</summary>
string[] lexerTags;
public string[] LexerTags
{
get
{
public string[] LexerTags {
get {
return lexerTags;
}
set
{
set {
lexerTags = value;
}
}
public LanguageProperties Language {
get {
return LanguageProperties.VBNet;
}
}
public IExpressionFinder CreateExpressionFinder(string fileName)
{
return new ExpressionFinder();
}
public bool CanParse(string fileName)
{
return Path.GetExtension(fileName).ToUpper() == ".VB";
}
public bool CanParse(IProject project)
{
return project.Language == "VBNet";
}
void RetrieveRegions(ICompilationUnit cu, ICSharpCode.NRefactory.Parser.SpecialTracker tracker)
{
for (int i = 0; i < tracker.CurrentSpecials.Count; ++i)
@ -87,7 +90,7 @@ namespace VBNetBinding.Parser @@ -87,7 +90,7 @@ namespace VBNetBinding.Parser
}
}
}
public ICompilationUnit Parse(IProjectContent projectContent, string fileName)
{
Properties textEditorProperties = ((Properties)PropertyService.Get("ICSharpCode.TextEditor.Document.Document.DefaultDocumentAggregatorProperties", new Properties()));
@ -95,7 +98,7 @@ namespace VBNetBinding.Parser @@ -95,7 +98,7 @@ namespace VBNetBinding.Parser
return Parse(p, fileName, projectContent);
}
}
public ICompilationUnit Parse(IProjectContent projectContent, string fileName, string fileContent)
{
using (ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguage.VBNet, new StringReader(fileContent))) {
@ -129,7 +132,7 @@ namespace VBNetBinding.Parser @@ -129,7 +132,7 @@ namespace VBNetBinding.Parser
return visitor.Cu;
}
void AddCommentTags(ICompilationUnit cu, System.Collections.Generic.List<ICSharpCode.NRefactory.Parser.TagComment> tagComments)
{
foreach (ICSharpCode.NRefactory.Parser.TagComment tagComment in tagComments)
@ -140,7 +143,7 @@ namespace VBNetBinding.Parser @@ -140,7 +143,7 @@ namespace VBNetBinding.Parser
cu.TagComments.Add(tag);
}
}
public IResolver CreateResolver()
{
return new ICSharpCode.SharpDevelop.Dom.NRefactoryResolver.NRefactoryResolver(ICSharpCode.NRefactory.Parser.SupportedLanguage.VBNet);

6
src/AddIns/DisplayBindings/XmlEditor/Project/Src/Parser.cs

@ -33,6 +33,12 @@ namespace ICSharpCode.XmlEditor @@ -33,6 +33,12 @@ namespace ICSharpCode.XmlEditor
}
}
public LanguageProperties Language {
get {
return null;
}
}
public IExpressionFinder CreateExpressionFinder(string fileName)
{
return null;

2
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/DynamicTreeDebuggerRow.cs

@ -58,7 +58,7 @@ namespace ICSharpCode.SharpDevelop.Services @@ -58,7 +58,7 @@ namespace ICSharpCode.SharpDevelop.Services
void OnIconPaint(object sender, ItemPaintEventArgs e)
{
e.Graphics.DrawImage(DebuggerIcons.GetImage(variable), e.ClipRectangle);
e.Graphics.DrawImageUnscaled(DebuggerIcons.GetImage(variable), e.ClipRectangle);
}
void OnLabelEdited(object sender, DynamicListEventArgs e)

4
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger-StateControl.cs

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="David Srbeck" email="dsrbecky@gmail.com"/>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision$</version>
// </file>

8
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Ime.cs

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Shinsaku Nakagawa" email="shinsaku@users.sourceforge.jp"/>
// <version value="$version"/>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Shinsaku Nakagawa" email="shinsaku@users.sourceforge.jp"/>
// <version>$Revision$</version>
// </file>
using System;

1372
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs

File diff suppressed because it is too large Load Diff

91
src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

@ -1513,75 +1513,77 @@ ConstantDeclarator<List<VariableDeclaration> constantDeclaration> @@ -1513,75 +1513,77 @@ ConstantDeclarator<List<VariableDeclaration> constantDeclaration>
f.TypeReference = type;
constantDeclaration.Add(f);
.)
.
.
/* 9.6 */
VariableDeclarator<List<VariableDeclaration> fieldDeclaration>
(.
Expression expr = null;
TypeReference type = null;ArrayList rank = null;List<Expression> dimension = null;
TypeReference type = null;
ArrayList rank = null;
List<Expression> dimension = null;
.) =
Identifier (. string name = t.val; .)
[ IF(IsSize()) ArrayInitializationModifier<out dimension> ]
[ IF(IsDims()) ArrayNameModifier<out rank> ]
[ IF(IsSize() && !IsDims()) ArrayInitializationModifier<out dimension> ]
[ IF(IsDims()) ArrayNameModifier<out rank> ]
(
IF (IsObjectCreation()) "As" ObjectCreateExpression<out expr>
(.
if (expr is ObjectCreateExpression) {
type = ((ObjectCreateExpression)expr).CreateType;
IF (IsObjectCreation()) "As" ObjectCreateExpression<out expr>
(.
if (expr is ObjectCreateExpression) {
type = ((ObjectCreateExpression)expr).CreateType;
} else {
type = ((ArrayCreateExpression)expr).CreateType;
}
.)
|
[ "As" TypeName<out type> ]
(.
if (type != null && dimension != null) {
if(type.RankSpecifier != null) {
Error("array rank only allowed one time");
} else {
type = ((ArrayCreateExpression)expr).CreateType;
}
.)
|
[ "As" TypeName<out type> ]
(.
if (type != null && dimension != null) {
if(type.RankSpecifier != null) {
Error("array rank only allowed one time");
} else {
for (int i = 0; i < dimension.Count; i++)
dimension[i] = Expression.AddInteger(dimension[i], 1);
if (rank == null) {
type.RankSpecifier = new int[] { dimension.Count - 1 };
} else {
rank.Insert(0, dimension.Count - 1);
type.RankSpecifier = (int[])rank.ToArray(typeof(int));
}
expr = new ArrayCreateExpression(type, dimension);
}
} else if (type != null && rank != null) {
if(type.RankSpecifier != null) {
Error("array rank only allowed one time");
for (int i = 0; i < dimension.Count; i++)
dimension[i] = Expression.AddInteger(dimension[i], 1);
if (rank == null) {
type.RankSpecifier = new int[] { dimension.Count - 1 };
} else {
rank.Insert(0, dimension.Count - 1);
type.RankSpecifier = (int[])rank.ToArray(typeof(int));
}
expr = new ArrayCreateExpression(type, dimension);
}
.)
[ "=" VariableInitializer<out expr> ]
} else if (type != null && rank != null) {
if(type.RankSpecifier != null) {
Error("array rank only allowed one time");
} else {
type.RankSpecifier = (int[])rank.ToArray(typeof(int));
}
}
.)
[ "=" VariableInitializer<out expr> ]
)
(. fieldDeclaration.Add(new VariableDeclaration(name, expr, type)); .)
.
.
/* 6.8 */
ArrayInitializationModifier<out List<Expression> arrayModifiers>
(.
arrayModifiers = null;
.) =
(.
arrayModifiers = null;
.) =
"(" InitializationRankList<out arrayModifiers> ")"
.
.
/* 7.5.4.3 */
InitializationRankList<out List<Expression> rank>
(.
rank = null;
Expression expr = null;
.) =
(.
rank = null;
Expression expr = null;
.) =
Expr<out expr> (. rank = new List<Expression>(); if (expr != null) { rank.Add(expr); } .)
{
"," Expr<out expr> (. if (expr != null) { rank.Add(expr); } .)
}
.
.
/* 9.6.3 */
VariableInitializer<out Expression initializerExpression>
@ -2302,8 +2304,7 @@ Block<out Statement stmt> @@ -2302,8 +2304,7 @@ Block<out Statement stmt>
{
IF (IsEndStmtAhead()) "End" EndOfStmt (. compilationUnit.AddChild(new EndStatement()); .)
| Statement EndOfStmt
/* IF (!LeaveBlock()) {
}*/
/* IF (!LeaveBlock()) { }*/
}
(.
stmt = blockStmt;

13
src/Libraries/NRefactory/Test/Parser/Statements/LocalVariableDeclarationTests.cs

@ -222,7 +222,7 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -222,7 +222,7 @@ namespace ICSharpCode.NRefactory.Tests.AST
}
[Test]
public void VBNetLocalArrayDeclarationTest()
public void VBNetLocalArrayDeclarationWithInitializationTest()
{
LocalVariableDeclaration lvd = ParseUtilVBNet.ParseStatement<LocalVariableDeclaration>("Dim a(10) As Integer");
Assert.AreEqual(1, lvd.Variables.Count);
@ -236,6 +236,17 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -236,6 +236,17 @@ namespace ICSharpCode.NRefactory.Tests.AST
Assert.AreEqual(11, ((PrimitiveExpression)ace.Arguments[0]).Value);
}
[Test]
public void VBNetLocalArrayDeclarationTest()
{
LocalVariableDeclaration lvd = ParseUtilVBNet.ParseStatement<LocalVariableDeclaration>("Dim a() As Integer");
Assert.AreEqual(1, lvd.Variables.Count);
Assert.AreEqual("a", lvd.Variables[0].Name);
TypeReference type = lvd.GetTypeForVariable(0);
Assert.AreEqual("Integer", type.Type);
Assert.AreEqual(new int[] { 0 } , type.RankSpecifier);
}
[Test]
public void VBNetLocalJaggedArrayDeclarationTest()
{

4
src/Main/Base/Project/Src/Dom/IParser.cs

@ -21,6 +21,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -21,6 +21,10 @@ namespace ICSharpCode.SharpDevelop.Dom
set;
}
LanguageProperties Language {
get;
}
IExpressionFinder CreateExpressionFinder(string fileName);
/// <summary>

22
src/Main/Base/Project/Src/Dom/LanguageProperties.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Refactoring;
namespace ICSharpCode.SharpDevelop.Dom
@ -118,6 +119,14 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -118,6 +119,14 @@ namespace ICSharpCode.SharpDevelop.Dom
return member.IsStatic == showStatic;
}
/// <summary>
/// Generates the default imports statements a new application for this language should use.
/// </summary>
public virtual IUsing CreateDefaultImports(IProjectContent pc)
{
return null;
}
public override string ToString()
{
return "[" + base.ToString() + "]";
@ -178,6 +187,19 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -178,6 +187,19 @@ namespace ICSharpCode.SharpDevelop.Dom
return base.ShowInNamespaceCompletion(c);
}
public override IUsing CreateDefaultImports(IProjectContent pc)
{
DefaultUsing u = new DefaultUsing(pc);
u.Usings.Add("Microsoft.VisualBasic");
u.Usings.Add("System");
u.Usings.Add("System.Collections");
u.Usings.Add("System.Collections.Generic");
u.Usings.Add("System.Drawing");
u.Usings.Add("System.Diagnostics");
u.Usings.Add("System.Windows.Forms");
return u;
}
public override string ToString()
{
return "[LanguageProperties: VB.NET]";

50
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -353,28 +353,14 @@ namespace ICSharpCode.Core @@ -353,28 +353,14 @@ namespace ICSharpCode.Core
return null;
}
static IProjectContent defaultProjectContent;
static DefaultProjectContent defaultProjectContent;
public static IProjectContent DefaultProjectContent {
get {
if (defaultProjectContent == null) {
lock (projectContents) {
if (defaultProjectContent == null) {
LoggingService.Info("Creating default project content");
defaultProjectContent = new DefaultProjectContent();
defaultProjectContent.ReferencedContents.Add(ProjectContentRegistry.Mscorlib);
string[] defaultReferences = new string[] {
"System",
"System.Data",
"System.Drawing",
"System.Windows.Forms",
"System.XML",
};
foreach (string defaultReference in defaultReferences) {
ReferenceProjectItem item = new ReferenceProjectItem(null, defaultReference);
IProjectContent pc = ProjectContentRegistry.GetProjectContentForReference(item);
defaultProjectContent.ReferencedContents.Add(pc);
}
CreateDefaultProjectContent();
}
}
}
@ -382,6 +368,38 @@ namespace ICSharpCode.Core @@ -382,6 +368,38 @@ namespace ICSharpCode.Core
}
}
static void CreateDefaultProjectContent()
{
LoggingService.Info("Creating default project content");
defaultProjectContent = new DefaultProjectContent();
defaultProjectContent.ReferencedContents.Add(ProjectContentRegistry.Mscorlib);
string[] defaultReferences = new string[] {
"System",
"System.Data",
"System.Drawing",
"System.Windows.Forms",
"System.XML",
};
foreach (string defaultReference in defaultReferences) {
ReferenceProjectItem item = new ReferenceProjectItem(null, defaultReference);
IProjectContent pc = ProjectContentRegistry.GetProjectContentForReference(item);
defaultProjectContent.ReferencedContents.Add(pc);
}
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += delegate {
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null) {
string file = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.FileName
?? WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.UntitledName;
if (file != null) {
LanguageProperties language = GetParser(file).Language;
if (language != null) {
defaultProjectContent.Language = language;
defaultProjectContent.DefaultImports = language.CreateDefaultImports(defaultProjectContent);
}
}
}
};
}
public static ParseInformation ParseFile(string fileName, string fileContent, bool updateCommentTags, bool fireUpdate)
{
return ParseFile(null, fileName, fileContent, updateCommentTags, fireUpdate);

2
src/Main/Base/Project/Src/TextEditor/Commands/CodeGenerators/OverridePropertiesCodeGenerator.cs

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision: 607 $</version>
// <version>$Revision$</version>
// </file>
using System;

10
src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/ExportProjectToHtmlDialog.cs

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Markus Palme" email="markuspalme@gmx.de"/>
// <version value="$version"/>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Markus Palme" email="MarkusPalme@gmx.de"/>
// <version>$Revision$</version>
// </file>
using System;

7
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Pad/SearchResultPanel.cs

@ -220,4 +220,11 @@ namespace SearchAndReplace @@ -220,4 +220,11 @@ namespace SearchAndReplace
}
}
}
public class BackToNormalView : ICSharpCode.SharpDevelop.AbstractMenuCommand
{
public override void Run()
{
SearchResultPanel.Instance.RemoveSpecialPanel();
}
}
}

Loading…
Cancel
Save