From 42e49ce6ef9d585aafa1fb9e347175e2d197557e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Sun, 4 Sep 2011 11:38:37 +0200 Subject: [PATCH] Fixed operator declaration operator location. --- .../Parser/mcs/cs-parser.cs | 48 +++++++++---------- .../Parser/mcs/cs-parser.jay | 48 +++++++++---------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index f87c16c9cc..7e0b431833 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -145,7 +145,7 @@ namespace Mono.CSharp UsingsBag ubag; List> mod_locations; Location parameterModifierLocation, savedLocation, savedOpenLocation, savedCloseLocation; - Location savedAttrParenOpenLocation, savedAttrParenCloseLocation; + Location savedAttrParenOpenLocation, savedAttrParenCloseLocation, savedOperatorLocation; Stack> locationListStack = new Stack> (); // used for type parameters List attributeCommas = new List (); List parameterListCommas = new List (); @@ -2020,91 +2020,91 @@ case 247: break; case 249: #line 2125 "cs-parser.jay" - { yyVal = Operator.OpType.LogicalNot; } + { yyVal = Operator.OpType.LogicalNot; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 250: #line 2126 "cs-parser.jay" - { yyVal = Operator.OpType.OnesComplement; } + { yyVal = Operator.OpType.OnesComplement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 251: #line 2127 "cs-parser.jay" - { yyVal = Operator.OpType.Increment; } + { yyVal = Operator.OpType.Increment; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 252: #line 2128 "cs-parser.jay" - { yyVal = Operator.OpType.Decrement; } + { yyVal = Operator.OpType.Decrement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 253: #line 2129 "cs-parser.jay" - { yyVal = Operator.OpType.True; } + { yyVal = Operator.OpType.True; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 254: #line 2130 "cs-parser.jay" - { yyVal = Operator.OpType.False; } + { yyVal = Operator.OpType.False; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 255: #line 2132 "cs-parser.jay" - { yyVal = Operator.OpType.Addition; } + { yyVal = Operator.OpType.Addition; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 256: #line 2133 "cs-parser.jay" - { yyVal = Operator.OpType.Subtraction; } + { yyVal = Operator.OpType.Subtraction; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 257: #line 2135 "cs-parser.jay" - { yyVal = Operator.OpType.Multiply; } + { yyVal = Operator.OpType.Multiply; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 258: #line 2136 "cs-parser.jay" - { yyVal = Operator.OpType.Division; } + { yyVal = Operator.OpType.Division; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 259: #line 2137 "cs-parser.jay" - { yyVal = Operator.OpType.Modulus; } + { yyVal = Operator.OpType.Modulus; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 260: #line 2138 "cs-parser.jay" - { yyVal = Operator.OpType.BitwiseAnd; } + { yyVal = Operator.OpType.BitwiseAnd; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 261: #line 2139 "cs-parser.jay" - { yyVal = Operator.OpType.BitwiseOr; } + { yyVal = Operator.OpType.BitwiseOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 262: #line 2140 "cs-parser.jay" - { yyVal = Operator.OpType.ExclusiveOr; } + { yyVal = Operator.OpType.ExclusiveOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 263: #line 2141 "cs-parser.jay" - { yyVal = Operator.OpType.LeftShift; } + { yyVal = Operator.OpType.LeftShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 264: #line 2142 "cs-parser.jay" - { yyVal = Operator.OpType.RightShift; } + { yyVal = Operator.OpType.RightShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 265: #line 2143 "cs-parser.jay" - { yyVal = Operator.OpType.Equality; } + { yyVal = Operator.OpType.Equality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 266: #line 2144 "cs-parser.jay" - { yyVal = Operator.OpType.Inequality; } + { yyVal = Operator.OpType.Inequality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 267: #line 2145 "cs-parser.jay" - { yyVal = Operator.OpType.GreaterThan; } + { yyVal = Operator.OpType.GreaterThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 268: #line 2146 "cs-parser.jay" - { yyVal = Operator.OpType.LessThan; } + { yyVal = Operator.OpType.LessThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 269: #line 2147 "cs-parser.jay" - { yyVal = Operator.OpType.GreaterThanOrEqual; } + { yyVal = Operator.OpType.GreaterThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 270: #line 2148 "cs-parser.jay" - { yyVal = Operator.OpType.LessThanOrEqual; } + { yyVal = Operator.OpType.LessThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 271: #line 2155 "cs-parser.jay" @@ -5298,7 +5298,7 @@ void case_247() } yyVal = new OperatorDeclaration (op, (FullNamedExpression) yyVals[-6+yyTop], loc); - lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); + lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), savedOperatorLocation, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_272() diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay index c96f2b3402..5191cab54d 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay @@ -143,7 +143,7 @@ namespace Mono.CSharp UsingsBag ubag; List> mod_locations; Location parameterModifierLocation, savedLocation, savedOpenLocation, savedCloseLocation; - Location savedAttrParenOpenLocation, savedAttrParenCloseLocation; + Location savedAttrParenOpenLocation, savedAttrParenCloseLocation, savedOperatorLocation; Stack> locationListStack = new Stack> (); // used for type parameters List attributeCommas = new List (); List parameterListCommas = new List (); @@ -2115,37 +2115,37 @@ operator_declarator } $$ = new OperatorDeclaration (op, (FullNamedExpression) $1, loc); - lbag.AddLocation ($$, GetLocation ($2), GetLocation ($3), GetLocation ($4), GetLocation ($7)); + lbag.AddLocation ($$, GetLocation ($2), savedOperatorLocation, GetLocation ($4), GetLocation ($7)); } | conversion_operator_declarator ; overloadable_operator // Unary operators: - : BANG { $$ = Operator.OpType.LogicalNot; } - | TILDE { $$ = Operator.OpType.OnesComplement; } - | OP_INC { $$ = Operator.OpType.Increment; } - | OP_DEC { $$ = Operator.OpType.Decrement; } - | TRUE { $$ = Operator.OpType.True; } - | FALSE { $$ = Operator.OpType.False; } + : BANG { $$ = Operator.OpType.LogicalNot; savedOperatorLocation = GetLocation ($1); } + | TILDE { $$ = Operator.OpType.OnesComplement; savedOperatorLocation = GetLocation ($1); } + | OP_INC { $$ = Operator.OpType.Increment; savedOperatorLocation = GetLocation ($1); } + | OP_DEC { $$ = Operator.OpType.Decrement; savedOperatorLocation = GetLocation ($1); } + | TRUE { $$ = Operator.OpType.True; savedOperatorLocation = GetLocation ($1); } + | FALSE { $$ = Operator.OpType.False; savedOperatorLocation = GetLocation ($1); } // Unary and binary: - | PLUS { $$ = Operator.OpType.Addition; } - | MINUS { $$ = Operator.OpType.Subtraction; } + | PLUS { $$ = Operator.OpType.Addition; savedOperatorLocation = GetLocation ($1); } + | MINUS { $$ = Operator.OpType.Subtraction; savedOperatorLocation = GetLocation ($1); } // Binary: - | STAR { $$ = Operator.OpType.Multiply; } - | DIV { $$ = Operator.OpType.Division; } - | PERCENT { $$ = Operator.OpType.Modulus; } - | BITWISE_AND { $$ = Operator.OpType.BitwiseAnd; } - | BITWISE_OR { $$ = Operator.OpType.BitwiseOr; } - | CARRET { $$ = Operator.OpType.ExclusiveOr; } - | OP_SHIFT_LEFT { $$ = Operator.OpType.LeftShift; } - | OP_SHIFT_RIGHT { $$ = Operator.OpType.RightShift; } - | OP_EQ { $$ = Operator.OpType.Equality; } - | OP_NE { $$ = Operator.OpType.Inequality; } - | OP_GT { $$ = Operator.OpType.GreaterThan; } - | OP_LT { $$ = Operator.OpType.LessThan; } - | OP_GE { $$ = Operator.OpType.GreaterThanOrEqual; } - | OP_LE { $$ = Operator.OpType.LessThanOrEqual; } + | STAR { $$ = Operator.OpType.Multiply; savedOperatorLocation = GetLocation ($1); } + | DIV { $$ = Operator.OpType.Division; savedOperatorLocation = GetLocation ($1); } + | PERCENT { $$ = Operator.OpType.Modulus; savedOperatorLocation = GetLocation ($1); } + | BITWISE_AND { $$ = Operator.OpType.BitwiseAnd; savedOperatorLocation = GetLocation ($1); } + | BITWISE_OR { $$ = Operator.OpType.BitwiseOr; savedOperatorLocation = GetLocation ($1); } + | CARRET { $$ = Operator.OpType.ExclusiveOr; savedOperatorLocation = GetLocation ($1); } + | OP_SHIFT_LEFT { $$ = Operator.OpType.LeftShift; savedOperatorLocation = GetLocation ($1); } + | OP_SHIFT_RIGHT { $$ = Operator.OpType.RightShift; savedOperatorLocation = GetLocation ($1); } + | OP_EQ { $$ = Operator.OpType.Equality; savedOperatorLocation = GetLocation ($1); } + | OP_NE { $$ = Operator.OpType.Inequality; savedOperatorLocation = GetLocation ($1); } + | OP_GT { $$ = Operator.OpType.GreaterThan; savedOperatorLocation = GetLocation ($1); } + | OP_LT { $$ = Operator.OpType.LessThan; savedOperatorLocation = GetLocation ($1); } + | OP_GE { $$ = Operator.OpType.GreaterThanOrEqual; savedOperatorLocation = GetLocation ($1); } + | OP_LE { $$ = Operator.OpType.LessThanOrEqual; savedOperatorLocation = GetLocation ($1); } ; conversion_operator_declarator