Browse Source

Merge previous fixes.

newNRvisualizers
Mike Krüger 15 years ago
parent
commit
2cfa36ea5f
  1. 25
      ICSharpCode.NRefactory/CSharp/Parser/CSharpParser.cs

25
ICSharpCode.NRefactory/CSharp/Parser/CSharpParser.cs

@ -73,7 +73,7 @@ namespace ICSharpCode.NRefactory.CSharp
if (nspace.Name != null) { if (nspace.Name != null) {
nDecl = new NamespaceDeclaration (); nDecl = new NamespaceDeclaration ();
nDecl.AddChild (new CSharpTokenNode (Convert (nspace.NamespaceLocation), "namespace".Length), NamespaceDeclaration.Roles.Keyword); nDecl.AddChild (new CSharpTokenNode (Convert (nspace.NamespaceLocation), "namespace".Length), NamespaceDeclaration.Roles.Keyword);
nDecl.AddChild (new Identifier (nspace.Name.Name, Convert (nspace.Name.Location)), NamespaceDeclaration.Roles.Identifier); nDecl.AddChild (ConvertMemberName (nspace.Name), NamespaceDeclaration.Roles.Identifier);
nDecl.AddChild (new CSharpTokenNode (Convert (nspace.OpenBrace), 1), NamespaceDeclaration.Roles.LBrace); nDecl.AddChild (new CSharpTokenNode (Convert (nspace.OpenBrace), 1), NamespaceDeclaration.Roles.LBrace);
AddToNamespace (nDecl); AddToNamespace (nDecl);
namespaceStack.Push (nDecl); namespaceStack.Push (nDecl);
@ -95,11 +95,21 @@ namespace ICSharpCode.NRefactory.CSharp
{ {
UsingDeclaration ud = new UsingDeclaration (); UsingDeclaration ud = new UsingDeclaration ();
ud.AddChild (new CSharpTokenNode (Convert (u.UsingLocation), "using".Length), UsingDeclaration.Roles.Keyword); ud.AddChild (new CSharpTokenNode (Convert (u.UsingLocation), "using".Length), UsingDeclaration.Roles.Keyword);
ud.AddChild (new Identifier (u.NSpace.Name, Convert (u.NSpace.Location)), UsingDeclaration.Roles.Identifier); ud.AddChild (ConvertMemberName (u.NSpace), UsingAliasDeclaration.Roles.Identifier);
ud.AddChild (new CSharpTokenNode (Convert (u.SemicolonLocation), 1), UsingDeclaration.Roles.Semicolon); ud.AddChild (new CSharpTokenNode (Convert (u.SemicolonLocation), 1), UsingDeclaration.Roles.Semicolon);
AddToNamespace (ud); AddToNamespace (ud);
} }
QualifiedIdentifier ConvertMemberName (MemberName memberName)
{
QualifiedIdentifier qi = new QualifiedIdentifier();
while (memberName != null) {
qi.InsertChildBefore (qi.FirstChild, new Identifier (memberName.Name, Convert (memberName.Location)), QualifiedIdentifier.Roles.Identifier);
memberName = memberName.Left;
}
return qi;
}
public override void Visit (UsingsBag.AliasUsing u) public override void Visit (UsingsBag.AliasUsing u)
{ {
UsingAliasDeclaration ud = new UsingAliasDeclaration (); UsingAliasDeclaration ud = new UsingAliasDeclaration ();
@ -128,7 +138,7 @@ namespace ICSharpCode.NRefactory.CSharp
AddModifiers (newType, location); AddModifiers (newType, location);
if (location != null) if (location != null)
newType.AddChild (new CSharpTokenNode (Convert (location[0]), "class".Length), TypeDeclaration.TypeKeyword); newType.AddChild (new CSharpTokenNode (Convert (location[0]), "class".Length), TypeDeclaration.TypeKeyword);
newType.AddChild (new Identifier (c.Name, Convert (c.MemberName.Location)), DomNode.Roles.Identifier); newType.AddChild (new Identifier (c.Basename, Convert (c.MemberName.Location)), DomNode.Roles.Identifier);
if (c.MemberName.TypeArguments != null) { if (c.MemberName.TypeArguments != null) {
var typeArgLocation = LocationsBag.GetLocations (c.MemberName); var typeArgLocation = LocationsBag.GetLocations (c.MemberName);
if (typeArgLocation != null) if (typeArgLocation != null)
@ -157,7 +167,7 @@ namespace ICSharpCode.NRefactory.CSharp
AddModifiers (newType, location); AddModifiers (newType, location);
if (location != null) if (location != null)
newType.AddChild (new CSharpTokenNode (Convert (location[0]), "struct".Length), TypeDeclaration.TypeKeyword); newType.AddChild (new CSharpTokenNode (Convert (location[0]), "struct".Length), TypeDeclaration.TypeKeyword);
newType.AddChild (new Identifier (s.Name, Convert (s.MemberName.Location)), DomNode.Roles.Identifier); newType.AddChild (new Identifier (s.Basename, Convert (s.MemberName.Location)), DomNode.Roles.Identifier);
if (s.MemberName.TypeArguments != null) { if (s.MemberName.TypeArguments != null) {
var typeArgLocation = LocationsBag.GetLocations (s.MemberName); var typeArgLocation = LocationsBag.GetLocations (s.MemberName);
if (typeArgLocation != null) if (typeArgLocation != null)
@ -186,7 +196,7 @@ namespace ICSharpCode.NRefactory.CSharp
AddModifiers (newType, location); AddModifiers (newType, location);
if (location != null) if (location != null)
newType.AddChild (new CSharpTokenNode (Convert (location[0]), "interface".Length), TypeDeclaration.TypeKeyword); newType.AddChild (new CSharpTokenNode (Convert (location[0]), "interface".Length), TypeDeclaration.TypeKeyword);
newType.AddChild (new Identifier (i.Name, Convert (i.MemberName.Location)), DomNode.Roles.Identifier); newType.AddChild (new Identifier (i.Basename, Convert (i.MemberName.Location)), DomNode.Roles.Identifier);
if (i.MemberName.TypeArguments != null) { if (i.MemberName.TypeArguments != null) {
var typeArgLocation = LocationsBag.GetLocations (i.MemberName); var typeArgLocation = LocationsBag.GetLocations (i.MemberName);
if (typeArgLocation != null) if (typeArgLocation != null)
@ -263,7 +273,7 @@ namespace ICSharpCode.NRefactory.CSharp
AddModifiers (newType, location); AddModifiers (newType, location);
if (location != null) if (location != null)
newType.AddChild (new CSharpTokenNode (Convert (location[0]), "enum".Length), TypeDeclaration.TypeKeyword); newType.AddChild (new CSharpTokenNode (Convert (location[0]), "enum".Length), TypeDeclaration.TypeKeyword);
newType.AddChild (new Identifier (e.Name, Convert (e.MemberName.Location)), DomNode.Roles.Identifier); newType.AddChild (new Identifier (e.Basename, Convert (e.MemberName.Location)), DomNode.Roles.Identifier);
if (location != null && location.Count > 1) if (location != null && location.Count > 1)
newType.AddChild (new CSharpTokenNode (Convert (location[1]), 1), DomNode.Roles.LBrace); newType.AddChild (new CSharpTokenNode (Convert (location[1]), 1), DomNode.Roles.LBrace);
typeStack.Push (newType); typeStack.Push (newType);
@ -595,7 +605,6 @@ namespace ICSharpCode.NRefactory.CSharp
modifierTable[Mono.CSharp.Modifiers.EXTERN] = Modifiers.Extern; modifierTable[Mono.CSharp.Modifiers.EXTERN] = Modifiers.Extern;
modifierTable[Mono.CSharp.Modifiers.VOLATILE] = Modifiers.Volatile; modifierTable[Mono.CSharp.Modifiers.VOLATILE] = Modifiers.Volatile;
modifierTable[Mono.CSharp.Modifiers.UNSAFE] = Modifiers.Unsafe; modifierTable[Mono.CSharp.Modifiers.UNSAFE] = Modifiers.Unsafe;
modifierTable[Mono.CSharp.Modifiers.OVERRIDE] = Modifiers.Override;
} }
void AddModifiers (DomNode parent, LocationsBag.MemberLocations location) void AddModifiers (DomNode parent, LocationsBag.MemberLocations location)
@ -1659,7 +1668,7 @@ namespace ICSharpCode.NRefactory.CSharp
var location = LocationsBag.GetLocations (conditionalExpression); var location = LocationsBag.GetLocations (conditionalExpression);
result.AddChild (new CSharpTokenNode (Convert (conditionalExpression.Location), 1), ConditionalExpression.Roles.QuestionMark); result.AddChild (new CSharpTokenNode (Convert (conditionalExpression.Location), 1), ConditionalExpression.Roles.QuestionMark);
result.AddChild ((DomNode)conditionalExpression.TrueExpr.Accept (this), ConditionalExpression.FalseExpressionRole); result.AddChild ((DomNode)conditionalExpression.TrueExpr.Accept (this), ConditionalExpression.TrueExpressionRole);
if (location != null) if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), ConditionalExpression.Roles.Colon); result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), ConditionalExpression.Roles.Colon);
result.AddChild ((DomNode)conditionalExpression.FalseExpr.Accept (this), ConditionalExpression.FalseExpressionRole); result.AddChild ((DomNode)conditionalExpression.FalseExpr.Accept (this), ConditionalExpression.FalseExpressionRole);

Loading…
Cancel
Save