All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.walkmod.javalang.compiler.symbols.AnonymousClassUtil Maven / Gradle / Ivy

There is a newer version: 2.3.7
Show newest version
package org.walkmod.javalang.compiler.symbols;

import org.walkmod.javalang.ast.Node;
import org.walkmod.javalang.ast.SymbolData;
import org.walkmod.javalang.ast.SymbolDataAware;
import org.walkmod.javalang.ast.expr.ObjectCreationExpr;

public class AnonymousClassUtil {
    public static boolean isAnonymousClass(ObjectCreationExpr n) {
        return n.getAnonymousClassBody() != null;
    }

    /**
     * For anonymous creations the initial symbol data is symbol data of super class.
     * That needs to be replaced with symbol data of anonymous class.
     * If we don't have symbol data we assume we need one. ;-)
     * @param n object creation expression
     * @return if the expression does NOT contains a resolved type
     */
    public static boolean needsSymbolData(ObjectCreationExpr n) {
        final SymbolType st = symbolDataType(n);
        return st == null || !st.isLoadedAnonymousClass();
    }

    /* @Nullable */ private static SymbolData symbolData(Node n) {
        return n instanceof SymbolDataAware ? ((SymbolDataAware) n).getSymbolData() : null;
    }


    /* @Nullable */ private static SymbolType symbolDataType(Node n) {
        final SymbolData sd = symbolData(n);
        return sd instanceof SymbolType ? (SymbolType) sd : null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy