Browse Source

correct positions of type members with modifiers

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@274 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Markus Palme 20 years ago
parent
commit
ed2a438995
  1. 72
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  2. 72
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  3. 27
      src/Libraries/NRefactory/Project/Src/Parser/Modifiers.cs
  4. 2278
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  5. 100
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

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

@ -823,70 +823,70 @@ Modifiers m) {
lexer.NextToken(); lexer.NextToken();
#line 997 "cs.ATG" #line 997 "cs.ATG"
m.Add(Modifier.New); m.Add(Modifier.New, t.Location);
break; break;
} }
case 96: { case 96: {
lexer.NextToken(); lexer.NextToken();
#line 998 "cs.ATG" #line 998 "cs.ATG"
m.Add(Modifier.Public); m.Add(Modifier.Public, t.Location);
break; break;
} }
case 95: { case 95: {
lexer.NextToken(); lexer.NextToken();
#line 999 "cs.ATG" #line 999 "cs.ATG"
m.Add(Modifier.Protected); m.Add(Modifier.Protected, t.Location);
break; break;
} }
case 82: { case 82: {
lexer.NextToken(); lexer.NextToken();
#line 1000 "cs.ATG" #line 1000 "cs.ATG"
m.Add(Modifier.Internal); m.Add(Modifier.Internal, t.Location);
break; break;
} }
case 94: { case 94: {
lexer.NextToken(); lexer.NextToken();
#line 1001 "cs.ATG" #line 1001 "cs.ATG"
m.Add(Modifier.Private); m.Add(Modifier.Private, t.Location);
break; break;
} }
case 117: { case 117: {
lexer.NextToken(); lexer.NextToken();
#line 1002 "cs.ATG" #line 1002 "cs.ATG"
m.Add(Modifier.Unsafe); m.Add(Modifier.Unsafe, t.Location);
break; break;
} }
case 47: { case 47: {
lexer.NextToken(); lexer.NextToken();
#line 1003 "cs.ATG" #line 1003 "cs.ATG"
m.Add(Modifier.Abstract); m.Add(Modifier.Abstract, t.Location);
break; break;
} }
case 101: { case 101: {
lexer.NextToken(); lexer.NextToken();
#line 1004 "cs.ATG" #line 1004 "cs.ATG"
m.Add(Modifier.Sealed); m.Add(Modifier.Sealed, t.Location);
break; break;
} }
case 105: { case 105: {
lexer.NextToken(); lexer.NextToken();
#line 1005 "cs.ATG" #line 1005 "cs.ATG"
m.Add(Modifier.Static); m.Add(Modifier.Static, t.Location);
break; break;
} }
case 1: { case 1: {
lexer.NextToken(); lexer.NextToken();
#line 1006 "cs.ATG" #line 1006 "cs.ATG"
if (t.val == "partial") { m.Add(Modifier.Partial); } if (t.val == "partial") { m.Add(Modifier.Partial, t.Location); }
break; break;
} }
default: SynErr(128); break; default: SynErr(128); break;
@ -915,7 +915,7 @@ Modifiers m, List<AttributeSection> attributes) {
templates = newType.Templates; templates = newType.Templates;
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
newType.Type = Types.Class; newType.Type = Types.Class;
@ -962,7 +962,7 @@ templates);
#line 735 "cs.ATG" #line 735 "cs.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
templates = newType.Templates; templates = newType.Templates;
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.Type = Types.Struct; newType.Type = Types.Struct;
@ -1008,7 +1008,7 @@ templates);
templates = newType.Templates; templates = newType.Templates;
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
newType.Type = Types.Interface; newType.Type = Types.Interface;
Expect(1); Expect(1);
@ -1051,7 +1051,7 @@ templates);
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
newType.Type = Types.Enum; newType.Type = Types.Enum;
Expect(1); Expect(1);
@ -1082,7 +1082,7 @@ out name);
#line 794 "cs.ATG" #line 794 "cs.ATG"
DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes); DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes);
templates = delegateDeclr.Templates; templates = delegateDeclr.Templates;
delegateDeclr.StartLocation = t.Location; delegateDeclr.StartLocation = m.GetDeclarationLocation(t.Location);
if ( if (
#line 798 "cs.ATG" #line 798 "cs.ATG"
@ -1677,98 +1677,98 @@ Modifiers m) {
lexer.NextToken(); lexer.NextToken();
#line 1032 "cs.ATG" #line 1032 "cs.ATG"
m.Add(Modifier.Abstract); m.Add(Modifier.Abstract, t.Location);
break; break;
} }
case 69: { case 69: {
lexer.NextToken(); lexer.NextToken();
#line 1033 "cs.ATG" #line 1033 "cs.ATG"
m.Add(Modifier.Extern); m.Add(Modifier.Extern, t.Location);
break; break;
} }
case 82: { case 82: {
lexer.NextToken(); lexer.NextToken();
#line 1034 "cs.ATG" #line 1034 "cs.ATG"
m.Add(Modifier.Internal); m.Add(Modifier.Internal, t.Location);
break; break;
} }
case 87: { case 87: {
lexer.NextToken(); lexer.NextToken();
#line 1035 "cs.ATG" #line 1035 "cs.ATG"
m.Add(Modifier.New); m.Add(Modifier.New, t.Location);
break; break;
} }
case 92: { case 92: {
lexer.NextToken(); lexer.NextToken();
#line 1036 "cs.ATG" #line 1036 "cs.ATG"
m.Add(Modifier.Override); m.Add(Modifier.Override, t.Location);
break; break;
} }
case 94: { case 94: {
lexer.NextToken(); lexer.NextToken();
#line 1037 "cs.ATG" #line 1037 "cs.ATG"
m.Add(Modifier.Private); m.Add(Modifier.Private, t.Location);
break; break;
} }
case 95: { case 95: {
lexer.NextToken(); lexer.NextToken();
#line 1038 "cs.ATG" #line 1038 "cs.ATG"
m.Add(Modifier.Protected); m.Add(Modifier.Protected, t.Location);
break; break;
} }
case 96: { case 96: {
lexer.NextToken(); lexer.NextToken();
#line 1039 "cs.ATG" #line 1039 "cs.ATG"
m.Add(Modifier.Public); m.Add(Modifier.Public, t.Location);
break; break;
} }
case 97: { case 97: {
lexer.NextToken(); lexer.NextToken();
#line 1040 "cs.ATG" #line 1040 "cs.ATG"
m.Add(Modifier.Readonly); m.Add(Modifier.Readonly, t.Location);
break; break;
} }
case 101: { case 101: {
lexer.NextToken(); lexer.NextToken();
#line 1041 "cs.ATG" #line 1041 "cs.ATG"
m.Add(Modifier.Sealed); m.Add(Modifier.Sealed, t.Location);
break; break;
} }
case 105: { case 105: {
lexer.NextToken(); lexer.NextToken();
#line 1042 "cs.ATG" #line 1042 "cs.ATG"
m.Add(Modifier.Static); m.Add(Modifier.Static, t.Location);
break; break;
} }
case 117: { case 117: {
lexer.NextToken(); lexer.NextToken();
#line 1043 "cs.ATG" #line 1043 "cs.ATG"
m.Add(Modifier.Unsafe); m.Add(Modifier.Unsafe, t.Location);
break; break;
} }
case 120: { case 120: {
lexer.NextToken(); lexer.NextToken();
#line 1044 "cs.ATG" #line 1044 "cs.ATG"
m.Add(Modifier.Virtual); m.Add(Modifier.Virtual, t.Location);
break; break;
} }
case 122: { case 122: {
lexer.NextToken(); lexer.NextToken();
#line 1045 "cs.ATG" #line 1045 "cs.ATG"
m.Add(Modifier.Volatile); m.Add(Modifier.Volatile, t.Location);
break; break;
} }
default: SynErr(137); break; default: SynErr(137); break;
@ -1795,7 +1795,7 @@ m, attributes);
#line 1283 "cs.ATG" #line 1283 "cs.ATG"
DestructorDeclaration d = new DestructorDeclaration(t.val, m.Modifier, attributes); DestructorDeclaration d = new DestructorDeclaration(t.val, m.Modifier, attributes);
d.Modifier = m.Modifier; d.Modifier = m.Modifier;
d.StartLocation = startPos; d.StartLocation = m.GetDeclarationLocation(startPos);
Expect(19); Expect(19);
Expect(20); Expect(20);
@ -1845,7 +1845,7 @@ out type);
#line 1061 "cs.ATG" #line 1061 "cs.ATG"
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier | Modifier.Const); FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier | Modifier.Const);
fd.StartLocation = startPos; fd.StartLocation = m.GetDeclarationLocation(startPos);
VariableDeclaration f = new VariableDeclaration(t.val); VariableDeclaration f = new VariableDeclaration(t.val);
fd.Fields.Add(f); fd.Fields.Add(f);
@ -1908,7 +1908,7 @@ p);
new TypeReference("void"), new TypeReference("void"),
p, p,
attributes); attributes);
methodDeclaration.StartLocation = startPos; methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = t.EndLocation; methodDeclaration.EndLocation = t.EndLocation;
methodDeclaration.Templates = templates; methodDeclaration.Templates = templates;
compilationUnit.AddChild(methodDeclaration); compilationUnit.AddChild(methodDeclaration);
@ -2170,7 +2170,7 @@ IsVarDecl()) {
#line 1195 "cs.ATG" #line 1195 "cs.ATG"
m.Check(Modifier.Fields); m.Check(Modifier.Fields);
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier); FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = startPos; fd.StartLocation = m.GetDeclarationLocation(startPos);
VariableDeclarator( VariableDeclarator(
#line 1199 "cs.ATG" #line 1199 "cs.ATG"
@ -2250,7 +2250,7 @@ p);
type, type,
p, p,
attributes); attributes);
methodDeclaration.StartLocation = startPos; methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = t.EndLocation; methodDeclaration.EndLocation = t.EndLocation;
methodDeclaration.Templates = templates; methodDeclaration.Templates = templates;
compilationUnit.AddChild(methodDeclaration); compilationUnit.AddChild(methodDeclaration);
@ -2277,7 +2277,7 @@ out stmt);
#line 1240 "cs.ATG" #line 1240 "cs.ATG"
PropertyDeclaration pDecl = new PropertyDeclaration(qualident, type, m.Modifier, attributes); PropertyDeclaration pDecl = new PropertyDeclaration(qualident, type, m.Modifier, attributes);
pDecl.StartLocation = startPos; pDecl.StartLocation = m.GetDeclarationLocation(startPos);
pDecl.EndLocation = qualIdentEndLocation; pDecl.EndLocation = qualIdentEndLocation;
pDecl.BodyStart = t.Location; pDecl.BodyStart = t.Location;
PropertyGetRegion getRegion; PropertyGetRegion getRegion;
@ -2309,7 +2309,7 @@ p);
#line 1259 "cs.ATG" #line 1259 "cs.ATG"
IndexerDeclaration indexer = new IndexerDeclaration(type, p, m.Modifier, attributes); IndexerDeclaration indexer = new IndexerDeclaration(type, p, m.Modifier, attributes);
indexer.StartLocation = startPos; indexer.StartLocation = m.GetDeclarationLocation(startPos);
indexer.EndLocation = t.EndLocation; indexer.EndLocation = t.EndLocation;
indexer.NamespaceName = qualident; indexer.NamespaceName = qualident;
PropertyGetRegion getRegion; PropertyGetRegion getRegion;

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

@ -713,7 +713,7 @@ TypeDecl<Modifiers m, List<AttributeSection> attributes>
templates = newType.Templates; templates = newType.Templates;
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
newType.Type = Types.Class; newType.Type = Types.Class;
.) .)
@ -734,7 +734,7 @@ TypeDecl<Modifiers m, List<AttributeSection> attributes>
| /*--- struct declaration: */ (. m.Check(Modifier.StructsInterfacesEnumsDelegates); .) | /*--- struct declaration: */ (. m.Check(Modifier.StructsInterfacesEnumsDelegates); .)
( "struct" (. TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); ( "struct" (. TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
templates = newType.Templates; templates = newType.Templates;
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.Type = Types.Struct; newType.Type = Types.Struct;
@ -759,7 +759,7 @@ TypeDecl<Modifiers m, List<AttributeSection> attributes>
templates = newType.Templates; templates = newType.Templates;
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
newType.Type = Types.Interface; newType.Type = Types.Interface;
.) .)
ident (. newType.Name = t.val; .) ident (. newType.Name = t.val; .)
@ -780,7 +780,7 @@ TypeDecl<Modifiers m, List<AttributeSection> attributes>
"enum" (. TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); "enum" (. TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
newType.Type = Types.Enum; newType.Type = Types.Enum;
.) .)
ident (. newType.Name = t.val; .) ident (. newType.Name = t.val; .)
@ -793,7 +793,7 @@ TypeDecl<Modifiers m, List<AttributeSection> attributes>
| /*--- delegate declaration: */ | /*--- delegate declaration: */
"delegate" (. DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes); "delegate" (. DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes);
templates = delegateDeclr.Templates; templates = delegateDeclr.Templates;
delegateDeclr.StartLocation = t.Location; delegateDeclr.StartLocation = m.GetDeclarationLocation(t.Location);
.) .)
( IF (NotVoidPointer()) "void" (. delegateDeclr.ReturnType = new TypeReference("void", 0, null); .) ( IF (NotVoidPointer()) "void" (. delegateDeclr.ReturnType = new TypeReference("void", 0, null); .)
| Type<out type> (. delegateDeclr.ReturnType = type; .) | Type<out type> (. delegateDeclr.ReturnType = type; .)
@ -994,16 +994,16 @@ ParameterArray<out ParameterDeclarationExpression p>
TypeModifier<Modifiers m> TypeModifier<Modifiers m>
= =
"new" (. m.Add(Modifier.New); .) "new" (. m.Add(Modifier.New, t.Location); .)
| "public" (. m.Add(Modifier.Public); .) | "public" (. m.Add(Modifier.Public, t.Location); .)
| "protected" (. m.Add(Modifier.Protected); .) | "protected" (. m.Add(Modifier.Protected, t.Location); .)
| "internal" (. m.Add(Modifier.Internal); .) | "internal" (. m.Add(Modifier.Internal, t.Location); .)
| "private" (. m.Add(Modifier.Private); .) | "private" (. m.Add(Modifier.Private, t.Location); .)
| "unsafe" (. m.Add(Modifier.Unsafe); .) | "unsafe" (. m.Add(Modifier.Unsafe, t.Location); .)
| "abstract" (. m.Add(Modifier.Abstract); .) | "abstract" (. m.Add(Modifier.Abstract, t.Location); .)
| "sealed" (. m.Add(Modifier.Sealed); .) | "sealed" (. m.Add(Modifier.Sealed, t.Location); .)
| "static" (. m.Add(Modifier.Static); .) | "static" (. m.Add(Modifier.Static, t.Location); .)
| ident (. if (t.val == "partial") { m.Add(Modifier.Partial); } .) | ident (. if (t.val == "partial") { m.Add(Modifier.Partial, t.Location); } .)
. .
ClassType<out TypeReference typeRef> ClassType<out TypeReference typeRef>
@ -1029,20 +1029,20 @@ IntegralType<out string name> (. name = ""; .)
MemberModifier<Modifiers m> MemberModifier<Modifiers m>
= =
"abstract" (. m.Add(Modifier.Abstract); .) "abstract" (. m.Add(Modifier.Abstract, t.Location); .)
| "extern" (. m.Add(Modifier.Extern); .) | "extern" (. m.Add(Modifier.Extern, t.Location); .)
| "internal" (. m.Add(Modifier.Internal); .) | "internal" (. m.Add(Modifier.Internal, t.Location); .)
| "new" (. m.Add(Modifier.New); .) | "new" (. m.Add(Modifier.New, t.Location); .)
| "override" (. m.Add(Modifier.Override); .) | "override" (. m.Add(Modifier.Override, t.Location); .)
| "private" (. m.Add(Modifier.Private); .) | "private" (. m.Add(Modifier.Private, t.Location); .)
| "protected" (. m.Add(Modifier.Protected); .) | "protected" (. m.Add(Modifier.Protected, t.Location); .)
| "public" (. m.Add(Modifier.Public); .) | "public" (. m.Add(Modifier.Public, t.Location); .)
| "readonly" (. m.Add(Modifier.Readonly); .) | "readonly" (. m.Add(Modifier.Readonly, t.Location); .)
| "sealed" (. m.Add(Modifier.Sealed); .) | "sealed" (. m.Add(Modifier.Sealed, t.Location); .)
| "static" (. m.Add(Modifier.Static); .) | "static" (. m.Add(Modifier.Static, t.Location); .)
| "unsafe" (. m.Add(Modifier.Unsafe); .) | "unsafe" (. m.Add(Modifier.Unsafe, t.Location); .)
| "virtual" (. m.Add(Modifier.Virtual); .) | "virtual" (. m.Add(Modifier.Virtual, t.Location); .)
| "volatile" (. m.Add(Modifier.Volatile); .) | "volatile" (. m.Add(Modifier.Volatile, t.Location); .)
. .
StructMemberDecl<Modifiers m, List<AttributeSection> attributes> StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
@ -1059,7 +1059,7 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
/*--- constant declaration: */ (. m.Check(Modifier.Constants); .) /*--- constant declaration: */ (. m.Check(Modifier.Constants); .)
"const" (.Point startPos = t.Location; .) "const" (.Point startPos = t.Location; .)
Type<out type> ident (. FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier | Modifier.Const); Type<out type> ident (. FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier | Modifier.Const);
fd.StartLocation = startPos; fd.StartLocation = m.GetDeclarationLocation(startPos);
VariableDeclaration f = new VariableDeclaration(t.val); VariableDeclaration f = new VariableDeclaration(t.val);
fd.Fields.Add(f); fd.Fields.Add(f);
.) .)
@ -1083,7 +1083,7 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
new TypeReference("void"), new TypeReference("void"),
p, p,
attributes); attributes);
methodDeclaration.StartLocation = startPos; methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = t.EndLocation; methodDeclaration.EndLocation = t.EndLocation;
methodDeclaration.Templates = templates; methodDeclaration.Templates = templates;
compilationUnit.AddChild(methodDeclaration); compilationUnit.AddChild(methodDeclaration);
@ -1194,7 +1194,7 @@ 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 = startPos; fd.StartLocation = m.GetDeclarationLocation(startPos);
.) .)
VariableDeclarator<variableDeclarators> VariableDeclarator<variableDeclarators>
{ "," VariableDeclarator<variableDeclarators> } { "," VariableDeclarator<variableDeclarators> }
@ -1228,7 +1228,7 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
type, type,
p, p,
attributes); attributes);
methodDeclaration.StartLocation = startPos; methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = t.EndLocation; methodDeclaration.EndLocation = t.EndLocation;
methodDeclaration.Templates = templates; methodDeclaration.Templates = templates;
compilationUnit.AddChild(methodDeclaration); compilationUnit.AddChild(methodDeclaration);
@ -1238,7 +1238,7 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
/*--- property declaration: */ /*--- property declaration: */
| "{" (. PropertyDeclaration pDecl = new PropertyDeclaration(qualident, type, m.Modifier, attributes); | "{" (. PropertyDeclaration pDecl = new PropertyDeclaration(qualident, type, m.Modifier, attributes);
pDecl.StartLocation = startPos; pDecl.StartLocation = m.GetDeclarationLocation(startPos);
pDecl.EndLocation = qualIdentEndLocation; pDecl.EndLocation = qualIdentEndLocation;
pDecl.BodyStart = t.Location; pDecl.BodyStart = t.Location;
PropertyGetRegion getRegion; PropertyGetRegion getRegion;
@ -1257,7 +1257,7 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
| (. m.Check(Modifier.Indexers); .) | (. m.Check(Modifier.Indexers); .)
"." "this" "[" FormalParameterList<p> "]" (. "." "this" "[" FormalParameterList<p> "]" (.
IndexerDeclaration indexer = new IndexerDeclaration(type, p, m.Modifier, attributes); IndexerDeclaration indexer = new IndexerDeclaration(type, p, m.Modifier, attributes);
indexer.StartLocation = startPos; indexer.StartLocation = m.GetDeclarationLocation(startPos);
indexer.EndLocation = t.EndLocation; indexer.EndLocation = t.EndLocation;
indexer.NamespaceName = qualident; indexer.NamespaceName = qualident;
PropertyGetRegion getRegion; PropertyGetRegion getRegion;
@ -1282,7 +1282,7 @@ ClassMemberDecl<Modifiers m, List<AttributeSection> attributes>
| /*--- destructor declaration: */ (. m.Check(Modifier.Destructors); Point startPos = t.Location; .) | /*--- destructor declaration: */ (. m.Check(Modifier.Destructors); Point startPos = t.Location; .)
"~" ident (. DestructorDeclaration d = new DestructorDeclaration(t.val, m.Modifier, attributes); "~" ident (. DestructorDeclaration d = new DestructorDeclaration(t.val, m.Modifier, attributes);
d.Modifier = m.Modifier; d.Modifier = m.Modifier;
d.StartLocation = startPos; d.StartLocation = m.GetDeclarationLocation(startPos);
.) .)
"(" ")" (. d.EndLocation = t.EndLocation; .) ( Block<out stmt> | ";" ) (. "(" ")" (. d.EndLocation = t.EndLocation; .) ( Block<out stmt> | ";" ) (.
d.Body = (BlockStatement)stmt; d.Body = (BlockStatement)stmt;

27
src/Libraries/NRefactory/Project/Src/Parser/Modifiers.cs

@ -6,12 +6,14 @@
// </file> // </file>
using ICSharpCode.NRefactory.Parser.AST; using ICSharpCode.NRefactory.Parser.AST;
using System.Drawing;
namespace ICSharpCode.NRefactory.Parser namespace ICSharpCode.NRefactory.Parser
{ {
internal class Modifiers internal class Modifiers
{ {
Modifier cur; Modifier cur;
Point location = new Point(-1, -1);
public Modifier Modifier { public Modifier Modifier {
get { get {
@ -19,6 +21,23 @@ namespace ICSharpCode.NRefactory.Parser
} }
} }
public Point GetDeclarationLocation(Point keywordLocation)
{
if(location.X == -1 && location.Y == -1) {
return keywordLocation;
}
return location;
}
public Point Location {
get {
return location;
}
set {
location = value;
}
}
public bool isNone { get { return cur == Modifier.None; } } public bool isNone { get { return cur == Modifier.None; } }
public bool Contains(Modifier m) public bool Contains(Modifier m)
@ -26,8 +45,12 @@ namespace ICSharpCode.NRefactory.Parser
return ((cur & m) != 0); return ((cur & m) != 0);
} }
public void Add(Modifier m) public void Add(Modifier m, Point tokenLocation)
{ {
if(location.X == -1 && location.Y == -1) {
location = tokenLocation;
}
if ((cur & m) == 0) { if ((cur & m) == 0) {
cur |= m; cur |= m;
} else { } else {
@ -37,7 +60,7 @@ namespace ICSharpCode.NRefactory.Parser
public void Add(Modifiers m) public void Add(Modifiers m)
{ {
Add(m.cur); Add(m.cur, m.Location);
} }
public void Check(Modifier allowed) public void Check(Modifier allowed)

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

File diff suppressed because it is too large Load Diff

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

@ -596,7 +596,7 @@ NonModuleDeclaration<Modifiers m, List<AttributeSection> attributes>
.) = .) =
(. m.Check(Modifier.Classes); .) (. m.Check(Modifier.Classes); .)
/* Spec, 7.5 */ /* Spec, 7.5 */
["Partial" (. m.Add(Modifier.Partial); .)] ["Partial" (. m.Add(Modifier.Partial, t.Location); .)]
"Class" "Class"
(. TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); (. TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
newType.StartLocation = t.Location; newType.StartLocation = t.Location;
@ -620,7 +620,7 @@ NonModuleDeclaration<Modifiers m, List<AttributeSection> attributes>
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
newType.Type = Types.Module; newType.Type = Types.Module;
.) .)
Identifier (. newType.Name = t.val; .) Identifier (. newType.Name = t.val; .)
@ -635,8 +635,7 @@ NonModuleDeclaration<Modifiers m, List<AttributeSection> attributes>
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
System.Console.WriteLine("XXX " + t.Location.ToString());
newType.Type = Types.Struct; newType.Type = Types.Struct;
.) .)
Identifier (. newType.Name = t.val; .) Identifier (. newType.Name = t.val; .)
@ -651,8 +650,7 @@ NonModuleDeclaration<Modifiers m, List<AttributeSection> attributes>
(. (.
m.Check(Modifier.VBEnums); m.Check(Modifier.VBEnums);
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
@ -670,7 +668,7 @@ NonModuleDeclaration<Modifiers m, List<AttributeSection> attributes>
(. (.
m.Check(Modifier.VBInterfacs); m.Check(Modifier.VBInterfacs);
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
newType.StartLocation = t.Location; newType.StartLocation = m.GetDeclarationLocation(t.Location);
compilationUnit.AddChild(newType); compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType); compilationUnit.BlockStart(newType);
newType.Type = Types.Interface; newType.Type = Types.Interface;
@ -688,7 +686,7 @@ NonModuleDeclaration<Modifiers m, List<AttributeSection> attributes>
m.Check(Modifier.VBDelegates); m.Check(Modifier.VBDelegates);
DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes); DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes);
delegateDeclr.ReturnType = new TypeReference("", "System.Void"); delegateDeclr.ReturnType = new TypeReference("", "System.Void");
delegateDeclr.StartLocation = t.Location; delegateDeclr.StartLocation = m.GetDeclarationLocation(t.Location);
List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>(); List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>();
.) .)
( (
@ -931,7 +929,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
IF(IsMustOverride(m)) IF(IsMustOverride(m))
(. (.
methodDeclaration = new MethodDeclaration(name, m.Modifier, null, p, attributes); methodDeclaration = new MethodDeclaration(name, m.Modifier, null, p, attributes);
methodDeclaration.StartLocation = startPos; methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = endLocation; methodDeclaration.EndLocation = endLocation;
methodDeclaration.TypeReference = new TypeReference("", "System.Void"); methodDeclaration.TypeReference = new TypeReference("", "System.Void");
@ -944,7 +942,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
| |
(. (.
methodDeclaration = new MethodDeclaration(name, m.Modifier, null, p, attributes); methodDeclaration = new MethodDeclaration(name, m.Modifier, null, p, attributes);
methodDeclaration.StartLocation = startPos; methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = endLocation; methodDeclaration.EndLocation = endLocation;
methodDeclaration.TypeReference = new TypeReference("", "System.Void"); methodDeclaration.TypeReference = new TypeReference("", "System.Void");
@ -971,7 +969,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
"End" "Sub" (. Point endLocation = t.EndLocation; .) EOL "End" "Sub" (. Point endLocation = t.EndLocation; .) EOL
(. (.
ConstructorDeclaration cd = new ConstructorDeclaration("New", m.Modifier, p, attributes); ConstructorDeclaration cd = new ConstructorDeclaration("New", m.Modifier, p, attributes);
cd.StartLocation = startPos; cd.StartLocation = m.GetDeclarationLocation(startPos);
cd.EndLocation = constructorEndLocation; cd.EndLocation = constructorEndLocation;
cd.Body = (BlockStatement)stmt; cd.Body = (BlockStatement)stmt;
cd.Body.EndLocation = endLocation; cd.Body.EndLocation = endLocation;
@ -1010,7 +1008,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
IF(IsMustOverride(m)) IF(IsMustOverride(m))
(. (.
methodDeclaration = new MethodDeclaration(name, m.Modifier, type, p, attributes); methodDeclaration = new MethodDeclaration(name, m.Modifier, type, p, attributes);
methodDeclaration.StartLocation = startPos; methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = t.EndLocation; methodDeclaration.EndLocation = t.EndLocation;
methodDeclaration.HandlesClause = handlesClause; methodDeclaration.HandlesClause = handlesClause;
@ -1022,7 +1020,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
| |
(. (.
methodDeclaration = new MethodDeclaration(name, m.Modifier, type, p, attributes); methodDeclaration = new MethodDeclaration(name, m.Modifier, type, p, attributes);
methodDeclaration.StartLocation = startPos; methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = t.EndLocation; methodDeclaration.EndLocation = t.EndLocation;
methodDeclaration.Templates = templates; methodDeclaration.Templates = templates;
@ -1066,7 +1064,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
EOL EOL
(. (.
DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, null, p, attributes, library, alias, charsetModifer); DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, null, p, attributes, library, alias, charsetModifer);
declareDeclaration.StartLocation = startPos; declareDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
declareDeclaration.EndLocation = t.EndLocation; declareDeclaration.EndLocation = t.EndLocation;
compilationUnit.AddChild(declareDeclaration); compilationUnit.AddChild(declareDeclaration);
.) .)
@ -1080,7 +1078,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
EOL EOL
(. (.
DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, type, p, attributes, library, alias, charsetModifer); DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, type, p, attributes, library, alias, charsetModifer);
declareDeclaration.StartLocation = startPos; declareDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
declareDeclaration.EndLocation = t.EndLocation; declareDeclaration.EndLocation = t.EndLocation;
compilationUnit.AddChild(declareDeclaration); compilationUnit.AddChild(declareDeclaration);
.) .)
@ -1103,7 +1101,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
[ ImplementsClause<out implementsClause> ] [ ImplementsClause<out implementsClause> ]
(. (.
eventDeclaration = new EventDeclaration(type, m.Modifier, p, attributes, name, implementsClause); eventDeclaration = new EventDeclaration(type, m.Modifier, p, attributes, name, implementsClause);
eventDeclaration.StartLocation = startPos; eventDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
eventDeclaration.EndLocation = t.EndLocation; eventDeclaration.EndLocation = t.EndLocation;
compilationUnit.AddChild(eventDeclaration); compilationUnit.AddChild(eventDeclaration);
.) .)
@ -1113,7 +1111,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
(. (.
m.Check(Modifier.Fields); m.Check(Modifier.Fields);
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier); FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = startPos; fd.StartLocation = m.GetDeclarationLocation(startPos);
.) .)
VariableDeclarator<variableDeclarators> VariableDeclarator<variableDeclarators>
{ "," VariableDeclarator<variableDeclarators> } { "," VariableDeclarator<variableDeclarators> }
@ -1125,10 +1123,10 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
.) .)
| /* 9.4 */ | /* 9.4 */
(. m.Check(Modifier.Fields); .) (. m.Check(Modifier.Fields); .)
"Const" (. m.Add(Modifier.Const); .) "Const" (. m.Add(Modifier.Const, t.Location); .)
(. (.
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier); FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = t.Location; fd.StartLocation = m.GetDeclarationLocation(t.Location);
List<VariableDeclaration> constantDeclarators = new List<VariableDeclaration>(); List<VariableDeclaration> constantDeclarators = new List<VariableDeclaration>();
.) .)
ConstantDeclarator<constantDeclarators> ConstantDeclarator<constantDeclarators>
@ -1164,7 +1162,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
IF(IsMustOverride(m)) IF(IsMustOverride(m))
(. (.
PropertyDeclaration pDecl = new PropertyDeclaration(propertyName, type, m.Modifier, attributes); PropertyDeclaration pDecl = new PropertyDeclaration(propertyName, type, m.Modifier, attributes);
pDecl.StartLocation = startPos; pDecl.StartLocation = m.GetDeclarationLocation(startPos);
pDecl.EndLocation = t.Location; pDecl.EndLocation = t.Location;
pDecl.TypeReference = type; pDecl.TypeReference = type;
pDecl.ImplementsClause = implementsClause; pDecl.ImplementsClause = implementsClause;
@ -1174,7 +1172,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
| |
(. (.
PropertyDeclaration pDecl = new PropertyDeclaration(propertyName, type, m.Modifier, attributes); PropertyDeclaration pDecl = new PropertyDeclaration(propertyName, type, m.Modifier, attributes);
pDecl.StartLocation = startPos; pDecl.StartLocation = m.GetDeclarationLocation(startPos);
pDecl.EndLocation = t.Location; pDecl.EndLocation = t.Location;
pDecl.BodyStart = t.Location; pDecl.BodyStart = t.Location;
pDecl.TypeReference = type; pDecl.TypeReference = type;
@ -1242,7 +1240,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
} }
EventDeclaration decl = new EventDeclaration(type, customEventName, m.Modifier, attributes); EventDeclaration decl = new EventDeclaration(type, customEventName, m.Modifier, attributes);
decl.StartLocation = startPos; decl.StartLocation = m.GetDeclarationLocation(startPos);
decl.EndLocation = t.EndLocation; decl.EndLocation = t.EndLocation;
compilationUnit.AddChild(decl); compilationUnit.AddChild(decl);
.) .)
@ -1283,7 +1281,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
operatorDeclaration.ConvertToType = returnType; operatorDeclaration.ConvertToType = returnType;
operatorDeclaration.ReturnTypeAttributes = returnTypeAttributes; operatorDeclaration.ReturnTypeAttributes = returnTypeAttributes;
operatorDeclaration.Body = (BlockStatement)stmt; operatorDeclaration.Body = (BlockStatement)stmt;
operatorDeclaration.StartLocation = startPos; operatorDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
operatorDeclaration.EndLocation = t.EndLocation; operatorDeclaration.EndLocation = t.EndLocation;
compilationUnit.AddChild(operatorDeclaration); compilationUnit.AddChild(operatorDeclaration);
.) .)
@ -2217,8 +2215,8 @@ LocalDeclarationStatement<out Statement statement>
.) = .) =
/* this differs from the spec: dim static x compiles with vbc. */ /* this differs from the spec: dim static x compiles with vbc. */
{ {
"Const" (. m.Add(Modifier.Const); .) "Const" (. m.Add(Modifier.Const, t.Location); .)
| "Static" (. m.Add(Modifier.Static); .) | "Static" (. m.Add(Modifier.Static, t.Location); .)
| "Dim" (. dimfound = true; .) | "Dim" (. dimfound = true; .)
} }
(. (.
@ -2938,37 +2936,37 @@ ParameterModifier<ParamModifiers m>
. .
TypeModifier<Modifiers m> TypeModifier<Modifiers m>
= "Public" (. m.Add(Modifier.Public); .) = "Public" (. m.Add(Modifier.Public, t.Location); .)
| "Protected" (. m.Add(Modifier.Protected); .) | "Protected" (. m.Add(Modifier.Protected, t.Location); .)
| "Friend" (. m.Add(Modifier.Internal); .) | "Friend" (. m.Add(Modifier.Internal, t.Location); .)
| "Private" (. m.Add(Modifier.Private); .) | "Private" (. m.Add(Modifier.Private, t.Location); .)
| "Shared" (. m.Add(Modifier.Static); .) | "Shared" (. m.Add(Modifier.Static, t.Location); .)
| "Shadows" (. m.Add(Modifier.New); .) | "Shadows" (. m.Add(Modifier.New, t.Location); .)
| "MustInherit" (. m.Add(Modifier.Abstract); .) | "MustInherit" (. m.Add(Modifier.Abstract, t.Location); .)
| "NotInheritable" (. m.Add(Modifier.Sealed); .) | "NotInheritable" (. m.Add(Modifier.Sealed, t.Location); .)
. .
MemberModifier<Modifiers m> = MemberModifier<Modifiers m> =
"MustInherit" (.m.Add(Modifier.Abstract);.) "MustInherit" (.m.Add(Modifier.Abstract, t.Location);.)
|"Default" (.m.Add(Modifier.Default);.) |"Default" (.m.Add(Modifier.Default, t.Location);.)
|"Friend" (.m.Add(Modifier.Internal);.) |"Friend" (.m.Add(Modifier.Internal, t.Location);.)
|"Shadows" (.m.Add(Modifier.New);.) |"Shadows" (.m.Add(Modifier.New, t.Location);.)
|"Overrides" (.m.Add(Modifier.Override);.) |"Overrides" (.m.Add(Modifier.Override, t.Location);.)
|"MustOverride" (.m.Add(Modifier.Abstract);.) |"MustOverride" (.m.Add(Modifier.Abstract, t.Location);.)
|"Private" (.m.Add(Modifier.Private);.) |"Private" (.m.Add(Modifier.Private, t.Location);.)
|"Protected" (.m.Add(Modifier.Protected);.) |"Protected" (.m.Add(Modifier.Protected, t.Location);.)
|"Public" (.m.Add(Modifier.Public);.) |"Public" (.m.Add(Modifier.Public, t.Location);.)
|"NotInheritable" (.m.Add(Modifier.Sealed);.) |"NotInheritable" (.m.Add(Modifier.Sealed, t.Location);.)
|"NotOverridable" (.m.Add(Modifier.Sealed);.) |"NotOverridable" (.m.Add(Modifier.Sealed, t.Location);.)
|"Shared" (.m.Add(Modifier.Static);.) |"Shared" (.m.Add(Modifier.Static, t.Location);.)
|"Overridable" (.m.Add(Modifier.Virtual);.) |"Overridable" (.m.Add(Modifier.Virtual, t.Location);.)
|"Overloads" (.m.Add(Modifier.Overloads);.) |"Overloads" (.m.Add(Modifier.Overloads, t.Location);.)
| "ReadOnly" (. /* m.Add(Modifier.ReadOnly); */ .) | "ReadOnly" (. /* m.Add(Modifier.ReadOnly); */ .)
| "WriteOnly" (. /* m.Add(Modifier.WriteOnly); */ .) | "WriteOnly" (. /* m.Add(Modifier.WriteOnly); */ .)
| "WithEvents" (.m.Add(Modifier.WithEvents);.) | "WithEvents" (.m.Add(Modifier.WithEvents, t.Location);.)
| "Dim" (.m.Add(Modifier.Dim);.) | "Dim" (.m.Add(Modifier.Dim, t.Location);.)
| "Widening" (.m.Add(Modifier.Widening);.) | "Widening" (.m.Add(Modifier.Widening, t.Location);.)
| "Narrowing" (.m.Add(Modifier.Narrowing);.) | "Narrowing" (.m.Add(Modifier.Narrowing, t.Location);.)
. .
END VBNET. END VBNET.

Loading…
Cancel
Save