1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00

retire parentIsSetter

This commit is contained in:
Kevin Glynn 2011-01-17 13:50:13 +01:00
parent 245ca22844
commit 7b8e66413f

View File

@ -261,8 +261,7 @@ scope {
// Is it a property read? Ensure we are not being applied to arguments or about to be assigned // Is it a property read? Ensure we are not being applied to arguments or about to be assigned
if (expType != null && if (expType != null &&
($primary_expression.Count == 1 || !((primary_expression_scope)($primary_expression.ToArray()[1])).parentIsApply) && ($primary_expression.Count == 1 || !((primary_expression_scope)($primary_expression.ToArray()[1])).parentIsApply)) {
($assignment.Count == 0 || !$assignment::parentIsSetter)) {
Debug($d1.token.Line + ": '" + $i1.thetext + "' might be a property"); Debug($d1.token.Line + ": '" + $i1.thetext + "' might be a property");
@ -312,8 +311,7 @@ scope {
// Is it a property read? Ensure we are not being applied to arguments or about to be assigned // Is it a property read? Ensure we are not being applied to arguments or about to be assigned
if (thisType != null && if (thisType != null &&
($primary_expression.Count == 1 || !((primary_expression_scope)($primary_expression.ToArray()[1])).parentIsApply) && ($primary_expression.Count == 1 || !((primary_expression_scope)($primary_expression.ToArray()[1])).parentIsApply)) {
($assignment.Count == 0 || !$assignment::parentIsSetter)) {
Debug($identifier.tree.Token.Line + ": '" + $identifier.thetext + "' might be a property"); Debug($identifier.tree.Token.Line + ": '" + $identifier.thetext + "' might be a property");
ResolveResult fieldResult = thisType.Resolve($identifier.thetext, AppEnv); ResolveResult fieldResult = thisType.Resolve($identifier.thetext, AppEnv);
@ -625,12 +623,9 @@ expression returns [TypeRepTemplate dotNetType]:
; ;
expression_list: expression_list:
expression (',' expression)* ; expression (',' expression)* ;
assignment assignment
scope {
bool parentIsSetter;
}
@init { @init {
$assignment::parentIsSetter = true;
CommonTree ret = null; CommonTree ret = null;
bool isThis = false; bool isThis = false;
} }
@ -639,7 +634,7 @@ scope {
$assignment.tree = ret; $assignment.tree = ret;
}: }:
((^('.' expression identifier generic_argument_list?) | identifier) '=') => ((^('.' expression identifier generic_argument_list?) | identifier) '=') =>
(^('.' se=expression i=identifier generic_argument_list?) | i=identifier { isThis = true;}) a='=' {$assignment::parentIsSetter = false; } rhs=expression (^('.' se=expression i=identifier generic_argument_list?) | i=identifier { isThis = true;}) a='=' rhs=expression
{ {
InterfaceRepTemplate seType = (isThis ? SymTabLookup("this") : $se.dotNetType) as InterfaceRepTemplate; InterfaceRepTemplate seType = (isThis ? SymTabLookup("this") : $se.dotNetType) as InterfaceRepTemplate;
if (seType != null) { if (seType != null) {
@ -655,7 +650,7 @@ scope {
} }
} }
} }
| unary_expression assignment_operator {$assignment::parentIsSetter = false; } expression ; | unary_expression assignment_operator expression ;
unary_expression returns [TypeRepTemplate dotNetType]: unary_expression returns [TypeRepTemplate dotNetType]:
@ -1203,7 +1198,7 @@ scope SymTab;
^('while' boolean_expression SEP embedded_statement) ^('while' boolean_expression SEP embedded_statement)
| do_statement | do_statement
| ^('for' for_initializer? SEP for_condition? SEP for_iterator? SEP embedded_statement) | ^('for' for_initializer? SEP for_condition? SEP for_iterator? SEP embedded_statement)
| ^('foreach' local_variable_type identifier { $SymTab::symtab[$identifier.thetext] = $local_variable_type.dotNetType; } expression SEP embedded_statement); | ^('foreach' local_variable_type identifier expression SEP { $SymTab::symtab[$identifier.thetext] = $local_variable_type.dotNetType; } embedded_statement);
do_statement: do_statement:
'do' embedded_statement 'while' '(' boolean_expression ')' ';' ; 'do' embedded_statement 'while' '(' boolean_expression ')' ';' ;
for_initializer: for_initializer: