Example usage for org.eclipse.jdt.internal.compiler.lookup LookupEnvironment methodVerifier

List of usage examples for org.eclipse.jdt.internal.compiler.lookup LookupEnvironment methodVerifier

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.lookup LookupEnvironment methodVerifier.

Prototype

public MethodVerifier methodVerifier() 

Source Link

Usage

From source file:com.codenvy.ide.ext.java.server.internal.codeassist.SelectionEngine.java

License:Open Source License

protected MethodBinding findOverriddenMethodInType(ReferenceBinding overriddenType, MethodBinding overriding)
        throws JavaModelException {
    if (overriddenType == null)
        return null;
    MethodBinding[] overriddenMethods = overriddenType.availableMethods();
    LookupEnvironment lookupEnv = this.lookupEnvironment;
    if (lookupEnv != null && overriddenMethods != null) {
        for (int i = 0; i < overriddenMethods.length; i++) {
            if (lookupEnv.methodVerifier().isMethodSubsignature(overriding, overriddenMethods[i])) {
                return overriddenMethods[i];
            }/*from w w  w.  ja v  a  2s . c  o  m*/
        }
    }
    return null;
}

From source file:com.redhat.ceylon.eclipse.core.model.loader.JDTMethod.java

License:Open Source License

public JDTMethod(MethodBinding method, LookupEnvironment lookupEnvironment) {
    this.method = method;
    this.lookupEnvironment = lookupEnvironment;
    this.methodVerifier = lookupEnvironment.methodVerifier();
}

From source file:org.codehaus.jdt.groovy.internal.compiler.ast.JDTClassNode.java

License:Open Source License

private void initializeMembers() {
    if (jdtBinding instanceof SourceTypeBinding) {
        SourceTypeBinding sourceType = (SourceTypeBinding) jdtBinding;
        if (sourceType.scope != null) {
            TypeDeclaration typeDecl = sourceType.scope.referenceContext;
            if (typeDecl instanceof GroovyTypeDeclaration) {
                groovyDecl = typeDecl;/* ww  w .jav  a 2 s.  c  o m*/
            }
        }
    }
    MethodBinding[] bindings = null;
    if (jdtBinding instanceof ParameterizedTypeBinding) {
        ReferenceBinding genericType = ((ParameterizedTypeBinding) jdtBinding).genericType();
        bindings = genericType.methods();
    } else {
        bindings = jdtBinding.methods();
    }
    if (bindings != null) {
        for (int i = 0; i < bindings.length; i++) {
            if (bindings[i].isConstructor()) {
                ConstructorNode cNode = constructorBindingToConstructorNode(bindings[i]);
                addConstructor(cNode);
            } else {
                MethodNode mNode = methodBindingToMethodNode(bindings[i]);
                addMethod(mNode);
            }
        }
    }
    if (jdtBinding instanceof BinaryTypeBinding) {
        MethodBinding[] infraBindings = ((BinaryTypeBinding) jdtBinding).infraMethods();
        for (int i = 0; i < infraBindings.length; i++) {
            if (infraBindings[i].isConstructor()) {
                ConstructorNode cNode = constructorBindingToConstructorNode(infraBindings[i]);
                addConstructor(cNode);
            } else {
                MethodNode mNode = methodBindingToMethodNode(infraBindings[i]);
                addMethod(mNode);
            }
        }
    }
    // Synthetic bindings are created for features like covariance, where the method implementing an interface method uses a
    // different return type (interface I { A foo(); } class C implements I { AA foo(); } - this needs a method 'A foo()' in C.
    if (jdtBinding instanceof SourceTypeBinding) {
        SourceTypeBinding jdtSourceTypeBinding = (SourceTypeBinding) jdtBinding;
        ClassScope classScope = jdtSourceTypeBinding.scope;
        // a null scope indicates it has already been 'cleaned up' so nothing to do (CUDeclaration.cleanUp())
        if (classScope != null) {
            CompilationUnitScope cuScope = classScope.compilationUnitScope();
            LookupEnvironment environment = classScope.environment();
            MethodVerifier verifier = environment.methodVerifier();
            cuScope.verifyMethods(verifier);
        }
        SyntheticMethodBinding[] syntheticMethodBindings = ((SourceTypeBinding) jdtBinding).syntheticMethods();
        if (syntheticMethodBindings != null) {
            for (int i = 0; i < syntheticMethodBindings.length; i++) {
                if (syntheticMethodBindings[i].isConstructor()) {
                    ConstructorNode cNode = constructorBindingToConstructorNode(bindings[i]);
                    addConstructor(cNode);
                } else {
                    MethodNode mNode = methodBindingToMethodNode(syntheticMethodBindings[i]);
                    addMethod(mNode);
                }
            }
        }
    }

    FieldBinding[] fieldBindings = null;
    if (jdtBinding instanceof ParameterizedTypeBinding) {
        fieldBindings = ((ParameterizedTypeBinding) jdtBinding).genericType().fields();
    } else {
        fieldBindings = jdtBinding.fields();
    }
    if (fieldBindings != null) {
        for (int i = 0; i < fieldBindings.length; i++) {
            FieldNode fNode = fieldBindingToFieldNode(fieldBindings[i], groovyDecl);
            addField(fNode);
        }
    }
}

From source file:org.nabucco.framework.mda.model.java.JavaModelLoader.java

License:Open Source License

/**
 * Process a compilation unit already parsed and build.
 * /*from ww  w  .jav  a  2  s  .c om*/
 * @param environment
 *            the lookup environment
 * @param parser
 *            the parser
 * @param unit
 *            the compilation unit
 */
private void process(LookupEnvironment environment, Parser parser, CompilationUnitDeclaration unit) {

    environment.unitBeingCompleted = unit;

    parser.getMethodBodies(unit);

    // fault in fields & methods
    if (unit.scope != null) {
        unit.scope.faultInTypes();
    }

    // verify inherited methods
    if (unit.scope != null) {
        unit.scope.verifyMethods(environment.methodVerifier());
    }

    // type checking
    unit.resolve();

    // flow analysis
    unit.analyseCode();

    // code generation
    unit.generateCode();

    if (JavaModelSupport.createCompilerOptions().produceReferenceInfo && unit.scope != null) {
        unit.scope.storeDependencyInfo();
    }

    unit.finalizeProblems();

    environment.unitBeingCompleted = null;

    unit.ignoreFurtherInvestigation = false;
    unit.cleanUp();
}