@Override public void visit(final GroovyCodeVisitor visitor) { if (visitor instanceof AsmClassGenerator) { AsmClassGenerator generator = (AsmClassGenerator) visitor; controller = generator.getController(); } super.visit(visitor); }
@Override public void visitConstructor(ConstructorNode node) { addThisReference(node); super.visitConstructor(node); }
private void checkFinalVariables(ClassNode node) { FinalVariableAnalyzer analyzer = new FinalVariableAnalyzer(null, getFinalVariablesCallback()); analyzer.visitClass(node); }
private void resolveScope(final ClassNode cNode) { // we need to resolve again! VariableScopeVisitor scopeVisitor = new VariableScopeVisitor(unit); scopeVisitor.visitClass(cNode); }
public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException { EnumVisitor ev = new EnumVisitor(CompilationUnit.this, source); ev.visitClass(classNode); } }, Phases.CONVERSION);
public void testCapitalize() { assertEquals("Foo", Verifier.capitalize("foo")); assertEquals("Foo", Verifier.capitalize("Foo")); assertEquals("fOo", Verifier.capitalize("fOo")); assertEquals("fOO", Verifier.capitalize("fOO")); assertEquals("F", Verifier.capitalize("f")); }
protected Statement createGetterBlock(PropertyNode propertyNode, final FieldNode field) { return new BytecodeSequence(new BytecodeInstruction() { public void visit(MethodVisitor mv) { if (field.isStatic()) { mv.visitFieldInsn(GETSTATIC, BytecodeHelper.getClassInternalName(classNode), field.getName(), BytecodeHelper.getTypeDescription(field.getType())); } else { mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, BytecodeHelper.getClassInternalName(classNode), field.getName(), BytecodeHelper.getTypeDescription(field.getType())); } BytecodeHelper.doReturn(mv, field.getType()); } }); }
protected void setUp() throws Exception { super.setUp(); source = SourceUnit.create("dummy.groovy", ""); verifier = new ClassCompletionVerifier(source); }
@Override public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException { InnerClassVisitor iv = new InnerClassVisitor(CompilationUnit.this, source); iv.visitClass(classNode); } }, Phases.SEMANTIC_ANALYSIS);
public void testDetectsFinalAbstractClass() throws Exception { checkVisitErrors("FinalClass", ACC_FINAL, false); checkVisitErrors("AbstractClass", ACC_ABSTRACT, false); checkVisitErrors(ABSTRACT_FINAL_CLASS, ACC_ABSTRACT | ACC_FINAL, true); checkErrorMessage(EXPECTED_CLASS_MODIFIER_ERROR_MESSAGE); }
private void checkGenericsUsage(ASTNode ref, ClassNode[] nodes) { for (ClassNode node : nodes) { checkGenericsUsage(ref, node); } }
@Override protected void visitObjectInitializerStatements(ClassNode node) { processingObjInitStatements = true; super.visitObjectInitializerStatements(node); processingObjInitStatements = false; }
@Override public void visitField(FieldNode node) { this.currentField = node; super.visitField(node); this.currentField = null; }
/** * Asserts that the script runs without any exceptions */ protected void assertScript(String text) throws Exception { assertScript(text, getTestClassName()); }
public void testInvalidNames() { assertInvalidName("1"); assertInvalidName("100"); assertInvalidName("1a"); assertInvalidName("a!"); assertInvalidName("a."); assertInvalidName("$"); }
public void testValidNames() { assertValidName("a"); assertValidName("a1234"); assertValidName("a_b_c"); assertValidName("a____1234"); }
protected ClassCollector createCollector(CompilationUnit unit) { return new DebugCollector(this, unit, null); }
public void testDetectsIncorrectOtherModifier() throws Exception { // can't check synchronized here as it doubles up with ACC_SUPER checkVisitErrors("DodgyClass", ACC_TRANSIENT | ACC_VOLATILE | ACC_NATIVE, true); checkErrorMessage(EXPECTED_TRANSIENT_CLASS_ERROR_MESSAGE); checkErrorMessage(EXPECTED_VOLATILE_CLASS_ERROR_MESSAGE); checkErrorMessage(EXPECTED_NATIVE_CLASS_ERROR_MESSAGE); }
public void testDetectsFinalAbstractInterface() throws Exception { checkVisitErrors(FINAL_INTERFACE, ACC_ABSTRACT | ACC_FINAL | ACC_INTERFACE, true); checkErrorMessage(EXPECTED_INTERFACE_MODIFIER_ERROR_MESSAGE); }