List of usage examples for org.eclipse.jdt.internal.compiler.lookup CompilationUnitScope verifyMethods
public void verifyMethods(MethodVerifier verifier)
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;// w ww. j av 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); } } }