Browse Source

Fixed qualified alias token location.

pull/32/merge
Mike Krüger 13 years ago
parent
commit
46f1a2ebff
  1. 12
      ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs
  2. 10
      ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs
  3. 10
      ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay

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

@ -196,10 +196,15 @@ namespace ICSharpCode.NRefactory.CSharp @@ -196,10 +196,15 @@ namespace ICSharpCode.NRefactory.CSharp
if (typeName is Mono.CSharp.QualifiedAliasMember) {
var qam = (Mono.CSharp.QualifiedAliasMember)typeName;
var loc = LocationsBag.GetLocations (typeName);
var memberType = new MemberType ();
memberType.Target = new SimpleType (qam.alias, Convert (qam.Location));
memberType.IsDoubleColon = true;
memberType.MemberName = qam.Name;
if (loc != null && loc.Count > 0)
memberType.AddChild (new CSharpTokenNode (Convert (loc [0]), Roles.DoubleColon), Roles.DoubleColon);
memberType.MemberNameToken = Identifier.Create (qam.Name, loc != null ? Convert (loc[1]) : TextLocation.Empty);
return memberType;
}
@ -2150,7 +2155,10 @@ namespace ICSharpCode.NRefactory.CSharp @@ -2150,7 +2155,10 @@ namespace ICSharpCode.NRefactory.CSharp
result.Target = new SimpleType (qualifiedAliasMember.alias, Convert (qualifiedAliasMember.Location));
result.IsDoubleColon = true;
var location = LocationsBag.GetLocations (qualifiedAliasMember);
result.AddChild (Identifier.Create (qualifiedAliasMember.Name, location != null ? Convert (location [0]) : TextLocation.Empty), Roles.Identifier);
if (location != null && location.Count > 0)
result.AddChild (new CSharpTokenNode (Convert (location [0]), Roles.DoubleColon), Roles.DoubleColon);
result.AddChild (Identifier.Create (qualifiedAliasMember.Name, location != null && location.Count > 1 ? Convert (location [1]) : TextLocation.Empty), Roles.Identifier);
return new TypeReferenceExpression () { Type = result };
}

10
ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs

@ -6254,7 +6254,7 @@ void case_339() @@ -6254,7 +6254,7 @@ void case_339()
var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop];
yyVal = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) yyVals[0+yyTop], lt1.Location);
lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]));
lbag.AddLocation (yyVal, savedLocation, GetLocation (yyVals[-1+yyTop]));
}
void case_341()
@ -6364,7 +6364,7 @@ void case_356() @@ -6364,7 +6364,7 @@ void case_356()
var lt2 = (Tokenizer.LocatedToken) yyVals[-2+yyTop];
yyVal = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) yyVals[-1+yyTop], lt1.Location);
lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop]));
lbag.AddLocation (yyVal, savedLocation, GetLocation (yyVals[0+yyTop]));
}
void case_357()
@ -6550,7 +6550,7 @@ void case_436() @@ -6550,7 +6550,7 @@ void case_436()
var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop];
yyVal = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) yyVals[0+yyTop], lt1.Location);
lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]));
lbag.AddLocation (yyVal, savedLocation, GetLocation (yyVals[-1+yyTop]));
}
void case_438()
@ -7058,7 +7058,7 @@ void case_531() @@ -7058,7 +7058,7 @@ void case_531()
var qam = new QualifiedAliasMember (lt1.Value, lt2.Value, (int) yyVals[0+yyTop], lt1.Location);
yyVal = qam;
lbag.AddLocation (qam.TypeArguments, Lexer.GetGenericDimensionLocations ());
lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]));
lbag.AddLocation (yyVal, savedLocation, GetLocation (yyVals[-1+yyTop]));
}
void case_532()
@ -7113,7 +7113,7 @@ void case_536() @@ -7113,7 +7113,7 @@ void case_536()
var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop];
if (lang_version == LanguageVersion.ISO_1)
FeatureIsNotAvailable (lt.Location, "namespace alias qualifier");
savedLocation = GetLocation (yyVals[0+yyTop]);
yyVal = lt;
}

10
ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay

@ -2806,7 +2806,7 @@ namespace_or_type_expr @@ -2806,7 +2806,7 @@ namespace_or_type_expr
var lt2 = (Tokenizer.LocatedToken) $2;
$$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
lbag.AddLocation ($$, GetLocation ($2));
lbag.AddLocation ($$, savedLocation, GetLocation ($2));
}
;
@ -2930,7 +2930,7 @@ explicit_interface @@ -2930,7 +2930,7 @@ explicit_interface
var lt2 = (Tokenizer.LocatedToken) $2;
$$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
lbag.AddLocation ($$, GetLocation ($4));
lbag.AddLocation ($$, savedLocation, GetLocation ($4));
}
| explicit_interface IDENTIFIER opt_type_argument_list DOT
{
@ -3245,7 +3245,7 @@ member_access @@ -3245,7 +3245,7 @@ member_access
var lt2 = (Tokenizer.LocatedToken) $2;
$$ = new QualifiedAliasMember (lt1.Value, lt2.Value, (TypeArguments) $3, lt1.Location);
lbag.AddLocation ($$, GetLocation ($2));
lbag.AddLocation ($$, savedLocation, GetLocation ($2));
}
| primary_expression DOT GENERATE_COMPLETION {
$$ = new CompletionMemberAccess ((Expression) $1, null,GetLocation ($3));
@ -3828,7 +3828,7 @@ unbound_type_name @@ -3828,7 +3828,7 @@ unbound_type_name
var qam = new QualifiedAliasMember (lt1.Value, lt2.Value, (int) $3, lt1.Location);
$$ = qam;
lbag.AddLocation (qam.TypeArguments, Lexer.GetGenericDimensionLocations ());
lbag.AddLocation ($$, GetLocation ($2));
lbag.AddLocation ($$, savedLocation, GetLocation ($2));
}
| unbound_type_name DOT identifier_inside_body
{
@ -3879,7 +3879,7 @@ qualified_alias_member @@ -3879,7 +3879,7 @@ qualified_alias_member
var lt = (Tokenizer.LocatedToken) $1;
if (lang_version == LanguageVersion.ISO_1)
FeatureIsNotAvailable (lt.Location, "namespace alias qualifier");
savedLocation = GetLocation ($2);
$$ = lt;
}
;

Loading…
Cancel
Save