Package org.codehaus.groovy.classgen
package org.codehaus.groovy.classgen
Provides classes for generating Java bytecode from Groovy Abstract Syntax Trees (AST).
This package contains the core class generation infrastructure that transforms Groovy's AST representation into executable Java bytecode using the ASM library. The main components include:
- AST visitors that traverse and transform Groovy class structures
- Bytecode generators that emit JVM instructions
- Verifiers that ensure code correctness and compliance with Java/Groovy semantics
- Support for inner classes, enums, annotations, and other Groovy language features
The primary entry point for bytecode generation is AsmClassGenerator,
which coordinates the entire class generation process. Various visitor classes handle specific aspects
such as annotation processing, inner class resolution, variable scoping, and verification.
- Since:
- 1.0
-
ClassDescriptionAn Annotation visitor responsible for: reading annotation metadata (@Retention, @Target, attribute types) verify that an
AnnotationNodeconforms to annotation meta enhancing anAnnotationNodeAST to reflect real annotation metaGenerates Java class versions of Groovy classes using ASM.Represents some custom bytecode generation by the compiler.Helper class used by the class generator.This class represents a sequence ofBytecodeInstructions orASTNodes.Checks that a class satisfies various conditions including: Incorrect class or method access modifiers No abstract methods appear in a non-abstract class Existence and correct visibility for inherited members Invalid attempts to override final membersAbstract base class for generator of Java class versions of Groovy AST classesAn exception thrown by the class generatorTo generate a class that has all the fields and methods, except that fields are not initialized and methods are empty.Enums have a parent constructor with two arguments from java.lang.Enum.Transforms enum classes by adding required methods and fields according to Java enum semantics.A specialized Groovy AST visitor meant to perform additional verifications upon the current AST.Analyzes variable assignments to determine if variables are effectively final, which is required for use in closures and lambda expressions.Callback interface notified when effectively final analysis detects a problem.A context shared across generations of a class and its inner classes.Completes the transformation of inner classes by adding synthetic fields and constructor parameters needed to maintain references to outer class instances.Processes inner classes during compilation, handling the creation of synthetic fields and parameters needed for inner class instances to reference their enclosing instances.Abstract base class providing helper methods for inner class visitors.Utility class to add return statements.Listener notified when a synthetic return statement is created.Initializes the variable scopes for an AST.Verifies the AST node and adds any default AST code before bytecode generation occurs.Strategy invoked for each synthetic method or constructor generated for default arguments.Performs various checks on code inside methods and constructors including checking for valid field, variables names etc.