Java Code Examples for org.codehaus.groovy.ast.expr.VariableExpression#isThisExpression()
The following examples show how to use
org.codehaus.groovy.ast.expr.VariableExpression#isThisExpression() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ClassCompletionVerifier.java From groovy with Apache License 2.0 | 5 votes |
private void checkSuperOrThisOnLHS(Expression expression) { if (!(expression instanceof VariableExpression)) return; VariableExpression ve = (VariableExpression) expression; if (ve.isThisExpression()) { addError("cannot have 'this' as LHS of an assignment", expression); } else if (ve.isSuperExpression()) { addError("cannot have 'super' as LHS of an assignment", expression); } }
Example 2
Source File: ClassCompletionVerifier.java From groovy with Apache License 2.0 | 5 votes |
private void checkFinalFieldAccess(Expression expression) { if (!(expression instanceof VariableExpression) && !(expression instanceof PropertyExpression)) return; Variable v = null; if (expression instanceof VariableExpression) { VariableExpression ve = (VariableExpression) expression; v = ve.getAccessedVariable(); } else { PropertyExpression propExp = ((PropertyExpression) expression); Expression objectExpression = propExp.getObjectExpression(); if (objectExpression instanceof VariableExpression) { VariableExpression varExp = (VariableExpression) objectExpression; if (varExp.isThisExpression()) { v = currentClass.getDeclaredField(propExp.getPropertyAsString()); } } } if (v instanceof FieldNode) { FieldNode fn = (FieldNode) v; /* * if it is static final but not accessed inside a static constructor, or, * if it is an instance final but not accessed inside a instance constructor, it is an error */ boolean isFinal = fn.isFinal(); boolean isStatic = fn.isStatic(); boolean error = isFinal && ((isStatic && !inStaticConstructor) || (!isStatic && !inConstructor)); if (error) addError("cannot modify" + (isStatic ? " static" : "") + " final field '" + fn.getName() + "' outside of " + (isStatic ? "static initialization block." : "constructor."), expression); } }
Example 3
Source File: StaticTypesLambdaWriter.java From groovy with Apache License 2.0 | 5 votes |
private static boolean isAccessingInstanceMembersOfEnclosingClass(final MethodNode syntheticLambdaMethodNode) { boolean[] result = new boolean[1]; GroovyCodeVisitor visitor = new CodeVisitorSupport() { @Override public void visitVariableExpression(final VariableExpression expression) { if (expression.isThisExpression()) { result[0] = true; } } }; syntheticLambdaMethodNode.getCode().visit(visitor); return result[0]; }
Example 4
Source File: AsmClassGenerator.java From groovy with Apache License 2.0 | 4 votes |
@Override public void visitVariableExpression(final VariableExpression expression) { final String variableName = expression.getName(); if (expression.isThisExpression()) { // "this" in static context is Class instance if (controller.isStaticMethod() || controller.getCompileStack().isInSpecialConstructorCall() || (!controller.getCompileStack().isImplicitThis() && controller.isStaticContext())) { ClassNode thisType = controller.getClassNode(); if (controller.isInGeneratedFunction()) { do { thisType = thisType.getOuterClass(); } while (ClassHelper.isGeneratedFunction(thisType)); } classX(thisType).visit(this); } else { loadThis(expression); } return; } if (expression.isSuperExpression()) { // "super" in static context is Class instance if (controller.isStaticMethod()) { ClassNode superType = controller.getClassNode().getSuperClass(); classX(superType).visit(this); } else { loadThis(expression); } return; } BytecodeVariable variable = controller.getCompileStack().getVariable(variableName, false); if (variable != null) { controller.getOperandStack().loadOrStoreVariable(variable, expression.isUseReferenceDirectly()); } else if (passingParams && controller.isInScriptBody()) { MethodVisitor mv = controller.getMethodVisitor(); mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/ScriptReference"); mv.visitInsn(DUP); loadThisOrOwner(); mv.visitLdcInsn(variableName); mv.visitMethodInsn(INVOKESPECIAL, "org/codehaus/groovy/runtime/ScriptReference", "<init>", "(Lgroovy/lang/Script;Ljava/lang/String;)V", false); } else { PropertyExpression pexp = thisPropX(true, variableName); pexp.getObjectExpression().setSourcePosition(expression); pexp.getProperty().setSourcePosition(expression); pexp.visit(this); } if (!controller.getCompileStack().isLHS()) { controller.getAssertionWriter().record(expression); } }