Browse Source

Fixed some dot locations inside member type names.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
babe656eb2
  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
  4. 7
      ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs

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

@ -134,6 +134,12 @@ namespace ICSharpCode.NRefactory.CSharp @@ -134,6 +134,12 @@ namespace ICSharpCode.NRefactory.CSharp
var memberType = new MemberType ();
memberType.AddChild (ConvertToType (ma.LeftExpression), MemberType.TargetRole);
var location = LocationsBag.GetLocations (ma);
cw
if (location != null)
memberType.AddChild (new CSharpTokenNode (Convert (location[0]), 1), MemberType.Roles.Dot);
memberType.MemberNameToken = Identifier.Create (ma.Name, Convert (ma.Location));
AddTypeArguments (ma, memberType);
@ -1880,10 +1886,10 @@ namespace ICSharpCode.NRefactory.CSharp @@ -1880,10 +1886,10 @@ namespace ICSharpCode.NRefactory.CSharp
var leftExpr = memberAccess.LeftExpression.Accept (this);
result.AddChild ((Expression)leftExpr, MemberReferenceExpression.Roles.TargetExpression);
}
var location = LocationsBag.GetLocations (memberAccess);
if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), MemberReferenceExpression.Roles.Dot);
}
var location = LocationsBag.GetLocations (memberAccess);
if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), MemberReferenceExpression.Roles.Dot);
result.AddChild (Identifier.Create (memberAccess.Name, Convert (memberAccess.Location)), MemberReferenceExpression.Roles.Identifier);

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

@ -2410,7 +2410,7 @@ case 378: @@ -2410,7 +2410,7 @@ case 378:
case 379:
#line 2993 "cs-parser.jay"
{
yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]);
yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (lbag), (ComposedTypeSpecifier) yyVals[0+yyTop]);
}
break;
case 380:
@ -4244,7 +4244,7 @@ void case_64() @@ -4244,7 +4244,7 @@ void case_64()
}
Arguments [] arguments = (Arguments []) yyVals[0+yyTop];
ATypeNameExpression expr = mname.GetTypeExpression ();
ATypeNameExpression expr = mname.GetTypeExpression (lbag);
yyVal = new Attribute (current_attr_target, expr, arguments, mname.Location, lexer.IsEscapedIdentifier (mname));
if (arguments != null) {
lbag.AddLocation (yyVal, savedAttrParenOpenLocation, savedAttrParenCloseLocation);
@ -6018,12 +6018,12 @@ void case_378() @@ -6018,12 +6018,12 @@ void case_378()
MemberName name = (MemberName) yyVals[-1+yyTop];
if (yyVals[0+yyTop] != null) {
yyVal = new ComposedCast (name.GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]);
yyVal = new ComposedCast (name.GetTypeExpression (lbag), (ComposedTypeSpecifier) yyVals[0+yyTop]);
} else {
if (name.Left == null && name.Name == "var")
yyVal = new VarExpr (name.Location);
else
yyVal = name.GetTypeExpression ();
yyVal = name.GetTypeExpression (lbag);
}
}
@ -6610,7 +6610,7 @@ void case_533() @@ -6610,7 +6610,7 @@ void case_533()
void case_534()
#line 3743 "cs-parser.jay"
{
var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression ();
var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression (lbag);
if (te.HasTypeArguments)
Error_TypeExpected (GetLocation (yyVals[0+yyTop]));

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

@ -779,7 +779,7 @@ attribute @@ -779,7 +779,7 @@ attribute
}
Arguments [] arguments = (Arguments []) $3;
ATypeNameExpression expr = mname.GetTypeExpression ();
ATypeNameExpression expr = mname.GetTypeExpression (lbag);
$$ = new Attribute (current_attr_target, expr, arguments, mname.Location, lexer.IsEscapedIdentifier (mname));
if (arguments != null) {
lbag.AddLocation ($$, savedAttrParenOpenLocation, savedAttrParenCloseLocation);
@ -2979,17 +2979,17 @@ type_expression @@ -2979,17 +2979,17 @@ type_expression
MemberName name = (MemberName) $1;
if ($2 != null) {
$$ = new ComposedCast (name.GetTypeExpression (), (ComposedTypeSpecifier) $2);
$$ = new ComposedCast (name.GetTypeExpression (lbag), (ComposedTypeSpecifier) $2);
} else {
if (name.Left == null && name.Name == "var")
$$ = new VarExpr (name.Location);
else
$$ = name.GetTypeExpression ();
$$ = name.GetTypeExpression (lbag);
}
}
| namespace_or_type_name pointer_stars
{
$$ = new ComposedCast (((MemberName) $1).GetTypeExpression (), (ComposedTypeSpecifier) $2);
$$ = new ComposedCast (((MemberName) $1).GetTypeExpression (lbag), (ComposedTypeSpecifier) $2);
}
| builtin_types opt_nullable
{
@ -3741,7 +3741,7 @@ unbound_type_name @@ -3741,7 +3741,7 @@ unbound_type_name
}
| namespace_or_type_name DOT IDENTIFIER generic_dimension
{
var te = ((MemberName) $1).GetTypeExpression ();
var te = ((MemberName) $1).GetTypeExpression (lbag);
if (te.HasTypeArguments)
Error_TypeExpected (GetLocation ($4));

7
ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs

@ -138,7 +138,7 @@ namespace Mono.CSharp { @@ -138,7 +138,7 @@ namespace Mono.CSharp {
return name;
}
public ATypeNameExpression GetTypeExpression ()
public ATypeNameExpression GetTypeExpression (LocationsBag locations = null)
{
if (Left == null) {
if (TypeArguments != null)
@ -154,7 +154,10 @@ namespace Mono.CSharp { @@ -154,7 +154,10 @@ namespace Mono.CSharp {
}
Expression lexpr = Left.GetTypeExpression ();
return new MemberAccess (lexpr, Name, TypeArguments, Location);
var result = new MemberAccess (lexpr, Name, TypeArguments, Location);
if (locations != null)
locations.AddLocation (result, locations.GetLocations (this));
return result;
}
public MemberName Clone ()

Loading…
Cancel
Save