Browse Source

Backported some parser bugfixes from SharpDevelop 2.1.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1709 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
Daniel Grunwald 19 years ago
parent
commit
d1a5637275
  1. 4
      src/Libraries/NRefactory/Project/Src/Parser/AST/Enums.cs
  2. 1716
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  3. 17
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  4. 2278
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  5. 22
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

4
src/Libraries/NRefactory/Project/Src/Parser/AST/Enums.cs

@ -43,7 +43,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
Overloads = 0x10000, // VB specific Overloads = 0x10000, // VB specific
WithEvents = 0x20000, // VB specific WithEvents = 0x20000, // VB specific
Default = 0x40000, // VB specific Default = 0x40000, // VB specific
Fixed = 0x80000,
Synthetic = 0x200000, Synthetic = 0x200000,
/// <summary>Only for VB properties.</summary> /// <summary>Only for VB properties.</summary>
@ -70,7 +70,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
VBInterfaceProperties = New | Overloads | ReadOnly | WriteOnly | Default, VBInterfaceProperties = New | Overloads | ReadOnly | WriteOnly | Default,
VBInterfaceEnums = New, VBInterfaceEnums = New,
Fields = New | Visibility | Static | ReadOnly | Volatile, Fields = New | Visibility | Static | ReadOnly | Volatile | Fixed,
PropertysEventsMethods = New | Visibility | Static | Virtual | Sealed | Override | Abstract | Extern, PropertysEventsMethods = New | Visibility | Static | Virtual | Sealed | Override | Abstract | Extern,
Indexers = New | Visibility | Virtual | Sealed | Override | Abstract | Extern, Indexers = New | Visibility | Virtual | Sealed | Override | Abstract | Extern,
Operators = Public | Static | Extern, Operators = Public | Static | Extern,

1716
src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs

File diff suppressed because it is too large Load Diff

17
src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG

@ -1168,6 +1168,7 @@ MemberModifiers<Modifiers m>
| "readonly" (. m.Add(Modifier.ReadOnly, t.Location); .) | "readonly" (. m.Add(Modifier.ReadOnly, t.Location); .)
| "sealed" (. m.Add(Modifier.Sealed, t.Location); .) | "sealed" (. m.Add(Modifier.Sealed, t.Location); .)
| "static" (. m.Add(Modifier.Static, t.Location); .) | "static" (. m.Add(Modifier.Static, t.Location); .)
| "fixed" (. m.Add(Modifier.Fixed, t.Location); .)
| "unsafe" (. m.Add(Modifier.Unsafe, t.Location); .) | "unsafe" (. m.Add(Modifier.Unsafe, t.Location); .)
| "virtual" (. m.Add(Modifier.Virtual, t.Location); .) | "virtual" (. m.Add(Modifier.Virtual, t.Location); .)
| "volatile" (. m.Add(Modifier.Volatile, t.Location); .) | "volatile" (. m.Add(Modifier.Volatile, t.Location); .)
@ -1350,12 +1351,26 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
.) .)
/*--- field declaration: */ /*--- field declaration: */
| IF (IsVarDecl()) (. m.Check(Modifier.Fields); | IF (IsVarDecl())
(. m.Check(Modifier.Fields);
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier); FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = m.GetDeclarationLocation(startPos); fd.StartLocation = m.GetDeclarationLocation(startPos);
.) .)
( IF (m.Contains(Modifier.Fixed))
VariableDeclarator<variableDeclarators>
"["
Expr<out expr>
"]"
{ ","
VariableDeclarator<variableDeclarators>
"["
Expr<out expr>
"]"
}
| /* non-fixed field */
VariableDeclarator<variableDeclarators> VariableDeclarator<variableDeclarators>
{ "," VariableDeclarator<variableDeclarators> } { "," VariableDeclarator<variableDeclarators> }
)
";" (. fd.EndLocation = t.EndLocation; fd.Fields = variableDeclarators; compilationUnit.AddChild(fd); .) ";" (. fd.EndLocation = t.EndLocation; fd.Fields = variableDeclarators; compilationUnit.AddChild(fd); .)
/*--- unqualified indexer declaration (without interface name): */ /*--- unqualified indexer declaration (without interface name): */

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

File diff suppressed because it is too large Load Diff

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

@ -635,16 +635,24 @@ TypeParameterConstraints<TemplateDefinition template>
"As" "As"
( (
"{" "{"
TypeName<out constraint> (. if (constraint != null) { template.Bases.Add(constraint); } .) TypeParameterConstraint<out constraint> (. if (constraint != null) { template.Bases.Add(constraint); } .)
{ {
"," ","
TypeName<out constraint> (. if (constraint != null) { template.Bases.Add(constraint); } .) TypeParameterConstraint<out constraint> (. if (constraint != null) { template.Bases.Add(constraint); } .)
} }
"}" "}"
| TypeName<out constraint> (. if (constraint != null) { template.Bases.Add(constraint); } .) | TypeParameterConstraint<out constraint> (. if (constraint != null) { template.Bases.Add(constraint); } .)
) )
. .
TypeParameterConstraint<out TypeReference constraint>
(. constraint = null; .)
= "Class" (. constraint = new TypeReference("class"); .)
| "Structure" (. constraint = new TypeReference("struct"); .)
| "New" (. constraint = new TypeReference("new"); .)
| TypeName<out constraint>
.
/* 6.4.2 */ /* 6.4.2 */
NonModuleDeclaration<Modifiers m, List<AttributeSection> attributes> NonModuleDeclaration<Modifiers m, List<AttributeSection> attributes>
(. (.
@ -1130,8 +1138,8 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
( (
"Sub" "Sub"
Identifier (. name = t.val; .) Identifier (. name = t.val; .)
"Lib" LiteralString (. library = t.literalValue.ToString(); .) "Lib" LiteralString (. library = t.literalValue as string; .)
["Alias" LiteralString (. alias = t.literalValue.ToString(); .)] ["Alias" LiteralString (. alias = t.literalValue as string; .)]
[ "(" [ FormalParameterList<p> ] ")" ] [ "(" [ FormalParameterList<p> ] ")" ]
EOL EOL
(. (.
@ -1143,8 +1151,8 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
| |
"Function" "Function"
Identifier (. name = t.val; .) Identifier (. name = t.val; .)
"Lib" LiteralString (. library = t.literalValue.ToString(); .) "Lib" LiteralString (. library = t.literalValue as string; .)
["Alias" LiteralString (. alias = t.literalValue.ToString(); .)] ["Alias" LiteralString (. alias = t.literalValue as string; .)]
[ "(" [ FormalParameterList<p> ] ")" ] [ "(" [ FormalParameterList<p> ] ")" ]
["As" TypeName<out type> ] ["As" TypeName<out type> ]
EOL EOL

Loading…
Cancel
Save