Browse Source

inserted operator declartions into DOM. fixed locations of operator declarations, this enabled folding for them

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@285 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Markus Palme 21 years ago
parent
commit
0ca4a6c4be
  1. 1376
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  2. 12
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  3. 1788
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  4. 9
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  5. 17
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

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

File diff suppressed because it is too large Load Diff

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

@ -1139,10 +1139,13 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1139,10 +1139,13 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
| (. m.Check(Modifier.Operators);
if (m.isNone) Error("at least one modifier must be set");
bool isImplicit = true;
Point startPos = Point.Empty;
.)
( "implicit" | "explicit" (. isImplicit = false; .) )
( "implicit" (. startPos = t.Location; .) | "explicit" (. isImplicit = false; startPos = t.Location; .) )
"operator" Type<out type> (. TypeReference operatorType = type; .)
"(" Type<out type> ident (. string varName = t.val; .) ")" ( Block<out stmt> | ";" (. stmt = null; .) )
"(" Type<out type> ident (. string varName = t.val; .) ")"
(. Point endPos = t.Location; .)
( Block<out stmt> | ";" (. stmt = null; .) )
(.
List<ParameterDeclarationExpression> parameters = new List<ParameterDeclarationExpression>();
@ -1154,6 +1157,8 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1154,6 +1157,8 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
isImplicit ? ConversionType.Implicit : ConversionType.Explicit
);
operatorDeclaration.Body = (BlockStatement)stmt;
operatorDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
operatorDeclaration.EndLocation = endPos;
compilationUnit.AddChild(operatorDeclaration);
.)
@ -1175,6 +1180,7 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1175,6 +1180,7 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
}
.)*/
)
(. Point endPos = t.Location; .)
")" ( Block<out stmt> | ";" )
(.
List<ParameterDeclarationExpression> parameters = new List<ParameterDeclarationExpression>();
@ -1188,6 +1194,8 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1188,6 +1194,8 @@ StructMemberDecl<Modifiers m, List<AttributeSection> attributes>
type,
op);
operatorDeclaration.Body = (BlockStatement)stmt;
operatorDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
operatorDeclaration.EndLocation = endPos;
compilationUnit.AddChild(operatorDeclaration);
.)

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

File diff suppressed because it is too large Load Diff

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

@ -1244,7 +1244,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1244,7 +1244,7 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
decl.EndLocation = t.EndLocation;
compilationUnit.AddChild(decl);
.)
| /* UnaryOperatorDeclaration */
|
"Operator"
(.
m.Check(Modifier.VBOperators);
@ -1269,7 +1269,8 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1269,7 +1269,8 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
(. parameters.Add(new ParameterDeclarationExpression(operandType, operandName, ParamModifier.In)); .)
}
")"
[ "As" { AttributeSection<out section> (. returnTypeAttributes.Add(section); .) } TypeName<out returnType> EOL ]
(. Point endPos = t.EndLocation; .)
[ "As" { AttributeSection<out section> (. returnTypeAttributes.Add(section); .) } TypeName<out returnType> (. endPos = t.EndLocation; .) EOL ]
Block<out stmt> "End" "Operator" EOL
(.
OperatorDeclaration operatorDeclaration = new OperatorDeclaration(m.Modifier,
@ -1282,7 +1283,9 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes> @@ -1282,7 +1283,9 @@ StructureMemberDecl<Modifiers m, List<AttributeSection> attributes>
operatorDeclaration.ReturnTypeAttributes = returnTypeAttributes;
operatorDeclaration.Body = (BlockStatement)stmt;
operatorDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
operatorDeclaration.EndLocation = t.EndLocation;
operatorDeclaration.EndLocation = endPos;
operatorDeclaration.Body.StartLocation = startPos;
operatorDeclaration.Body.EndLocation = t.Location;
compilationUnit.AddChild(operatorDeclaration);
.)
.

17
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -411,6 +411,23 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -411,6 +411,23 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return null;
}
public override object Visit(AST.OperatorDeclaration operatorDeclaration, object data)
{
DefaultClass c = GetCurrentClass();
DefaultRegion region = GetRegion(operatorDeclaration.StartLocation, operatorDeclaration.EndLocation);
DefaultRegion bodyRegion = GetRegion(operatorDeclaration.EndLocation, operatorDeclaration.Body != null ? operatorDeclaration.Body.EndLocation : new Point(-1, -1));
DefaultMethod method = new DefaultMethod(operatorDeclaration.Name, CreateReturnType(operatorDeclaration.ConvertToType), ConvertModifier(operatorDeclaration.Modifier), region, bodyRegion, c);
if(operatorDeclaration.Parameters != null)
{
foreach (AST.ParameterDeclarationExpression par in operatorDeclaration.Parameters) {
method.Parameters.Add(CreateParameter(par, method));
}
}
c.Methods.Add(method);
return null;
}
public override object Visit(AST.ConstructorDeclaration constructorDeclaration, object data)
{
DefaultRegion region = GetRegion(constructorDeclaration.StartLocation, constructorDeclaration.EndLocation);

Loading…
Cancel
Save