Browse Source

Fixed parameter comma locations.

newNRvisualizers
Mike Krüger 15 years ago
parent
commit
bd01cadd93
  1. 5
      ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs
  2. 1372
      ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs
  3. 24
      ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay

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

@ -836,7 +836,7 @@ namespace ICSharpCode.NRefactory.CSharp
// } else { // } else {
newMethod.AddChild (bodyBlock, MethodDeclaration.Roles.Body); newMethod.AddChild (bodyBlock, MethodDeclaration.Roles.Body);
// } // }
} else if (location != null && location.Count < 3) { } else if (location != null && location.Count < 3 && typeStack.Peek ().ClassType != ClassType.Interface) {
// parser error, set end node to max value. // parser error, set end node to max value.
newMethod.AddChild (new ErrorNode (), AstNode.Roles.Error); newMethod.AddChild (new ErrorNode (), AstNode.Roles.Error);
} }
@ -2136,8 +2136,9 @@ namespace ICSharpCode.NRefactory.CSharp
var paramLocation = LocationsBag.GetLocations (parameters); var paramLocation = LocationsBag.GetLocations (parameters);
for (int i = 0; i < parameters.Count; i++) { for (int i = 0; i < parameters.Count; i++) {
if (paramLocation != null && i > 0 && i - 1 < paramLocation.Count) if (paramLocation != null && i > 0 && i - 1 < paramLocation.Count) {
parent.AddChild (new CSharpTokenNode (Convert (paramLocation [i - 1]), 1), ParameterDeclaration.Roles.Comma); parent.AddChild (new CSharpTokenNode (Convert (paramLocation [i - 1]), 1), ParameterDeclaration.Roles.Comma);
}
var p = (Parameter)parameters.FixedParameters [i]; var p = (Parameter)parameters.FixedParameters [i];
var location = LocationsBag.GetLocations (p); var location = LocationsBag.GetLocations (p);

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

File diff suppressed because it is too large Load Diff

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

@ -146,6 +146,7 @@ namespace Mono.CSharp
Location savedAttrParenOpenLocation, savedAttrParenCloseLocation; Location savedAttrParenOpenLocation, savedAttrParenCloseLocation;
Stack<List<Location>> locationListStack = new Stack<List<Location>> (); // used for type parameters Stack<List<Location>> locationListStack = new Stack<List<Location>> (); // used for type parameters
List<Location> attributeCommas = new List<Location> (); List<Location> attributeCommas = new List<Location> ();
List<Location> parameterListCommas = new List<Location> ();
object lastYYVal; object lastYYVal;
@ -1434,20 +1435,25 @@ formal_parameter_list
{ {
var pars_list = (List<Parameter>) $1; var pars_list = (List<Parameter>) $1;
$$ = new ParametersCompiled (pars_list.ToArray ()); $$ = new ParametersCompiled (pars_list.ToArray ());
lbag.AddLocation ($$, lbag.GetLocations (pars_list)); lbag.AddLocation ($$, parameterListCommas);
} }
| fixed_parameters COMMA parameter_array | fixed_parameters COMMA parameter_array
{ {
var pars_list = (List<Parameter>) $1; var pars_list = (List<Parameter>) $1;
pars_list.Add ((Parameter) $3); pars_list.Add ((Parameter) $3);
parameterListCommas.Add (GetLocation ($2));
$$ = new ParametersCompiled (pars_list.ToArray ()); $$ = new ParametersCompiled (pars_list.ToArray ());
lbag.AddLocation ($$, parameterListCommas);
} }
| fixed_parameters COMMA arglist_modifier | fixed_parameters COMMA arglist_modifier
{ {
var pars_list = (List<Parameter>) $1; var pars_list = (List<Parameter>) $1;
pars_list.Add (new ArglistParameter (GetLocation ($3))); pars_list.Add (new ArglistParameter (GetLocation ($3)));
parameterListCommas.Add (GetLocation ($2));
$$ = new ParametersCompiled (pars_list.ToArray (), true); $$ = new ParametersCompiled (pars_list.ToArray (), true);
lbag.AddLocation ($$, parameterListCommas);
} }
| parameter_array COMMA error | parameter_array COMMA error
{ {
@ -1455,6 +1461,7 @@ formal_parameter_list
report.Error (231, ((Parameter) $1).Location, "A params parameter must be the last parameter in a formal parameter list"); report.Error (231, ((Parameter) $1).Location, "A params parameter must be the last parameter in a formal parameter list");
$$ = new ParametersCompiled (new Parameter[] { (Parameter) $1 } ); $$ = new ParametersCompiled (new Parameter[] { (Parameter) $1 } );
lbag.AddLocation ($$, parameterListCommas);
} }
| fixed_parameters COMMA parameter_array COMMA error | fixed_parameters COMMA parameter_array COMMA error
{ {
@ -1463,14 +1470,18 @@ formal_parameter_list
var pars_list = (List<Parameter>) $1; var pars_list = (List<Parameter>) $1;
pars_list.Add (new ArglistParameter (GetLocation ($3))); pars_list.Add (new ArglistParameter (GetLocation ($3)));
parameterListCommas.Add (GetLocation ($2));
parameterListCommas.Add (GetLocation ($4));
$$ = new ParametersCompiled (pars_list.ToArray (), true); $$ = new ParametersCompiled (pars_list.ToArray (), true);
lbag.AddLocation ($$, parameterListCommas);
} }
| arglist_modifier COMMA error | arglist_modifier COMMA error
{ {
report.Error (257, GetLocation ($1), "An __arglist parameter must be the last parameter in a formal parameter list"); report.Error (257, GetLocation ($1), "An __arglist parameter must be the last parameter in a formal parameter list");
$$ = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true); $$ = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
lbag.AddLocation ($$, parameterListCommas);
} }
| fixed_parameters COMMA ARGLIST COMMA error | fixed_parameters COMMA ARGLIST COMMA error
{ {
@ -1478,8 +1489,11 @@ formal_parameter_list
var pars_list = (List<Parameter>) $1; var pars_list = (List<Parameter>) $1;
pars_list.Add (new ArglistParameter (GetLocation ($3))); pars_list.Add (new ArglistParameter (GetLocation ($3)));
parameterListCommas.Add (GetLocation ($2));
parameterListCommas.Add (GetLocation ($4));
$$ = new ParametersCompiled (pars_list.ToArray (), true); $$ = new ParametersCompiled (pars_list.ToArray (), true);
lbag.AddLocation ($$, parameterListCommas);
} }
| parameter_array | parameter_array
{ {
@ -1502,7 +1516,7 @@ fixed_parameters
parameters_bucket.Clear (); parameters_bucket.Clear ();
Parameter p = (Parameter) $1; Parameter p = (Parameter) $1;
parameters_bucket.Add (p); parameters_bucket.Add (p);
parameterListCommas.Clear ();
default_parameter_used = p.HasDefaultValue; default_parameter_used = p.HasDefaultValue;
$$ = parameters_bucket; $$ = parameters_bucket;
} }
@ -1519,7 +1533,7 @@ fixed_parameters
default_parameter_used |= p.HasDefaultValue; default_parameter_used |= p.HasDefaultValue;
pars.Add (p); pars.Add (p);
lbag.AppendTo (pars, GetLocation ($2)); parameterListCommas.Add (GetLocation ($2));
} }
$$ = $1; $$ = $1;

Loading…
Cancel
Save