Package org.aspectj.org.eclipse.jdt.internal.compiler.lookup

Examples of org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding


      }
    } else if (isTypeVariable()) {
      final TypeVariableBinding typeVariableBinding = (TypeVariableBinding) this.binding;
      final Binding declaringElement = typeVariableBinding.declaringElement;
      if (declaringElement instanceof MethodBinding) {
        MethodBinding methodBinding = (MethodBinding) declaringElement;
        return !methodBinding.declaringClass.isBinaryBinding();
      } else {
        final org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding typeBinding = (org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding) declaringElement;
        if (typeBinding instanceof ReferenceBinding) {
          return !((ReferenceBinding) typeBinding).isBinaryBinding();
View Full Code Here


      ReferenceBinding refBinding  = (ReferenceBinding) variable.declaringElement;
      if (matchesName(refBinding.sourceName, pattern.declaringMemberName)) {
        return ACCURATE_MATCH;
      }
    } else if (variable.declaringElement instanceof MethodBinding) {
      MethodBinding methBinding  = (MethodBinding) variable.declaringElement;
      if (matchesName(methBinding.declaringClass.sourceName, pattern.methodDeclaringClassName) &&
        (methBinding.isConstructor() || matchesName(methBinding.selector, pattern.declaringMemberName))) {
        int length = pattern.methodArgumentTypes==null ? 0 : pattern.methodArgumentTypes.length;
        if (methBinding.parameters == null) {
          if (length == 0) return ACCURATE_MATCH;
        } else if (methBinding.parameters.length == length){
          for (int i=0; i<length; i++) {
View Full Code Here

    MethodBinding[] orig = sourceTypeBinding.methodsBase();
    // if (interTypeMethods.isEmpty()) return orig;

    List ret = new ArrayList(Arrays.asList(orig));
    for (int i = 0, len = interTypeMethods.size(); i < len; i++) {
      MethodBinding method = (MethodBinding) interTypeMethods.get(i);
      ret.add(method);
    }

    ReferenceBinding[] interfaces = sourceTypeBinding.superInterfaces();
    for (int i = 0; i < interfaces.length; i++) {
View Full Code Here

  private void addPublicITDSFrom(SourceTypeBinding anInterface, List toAList) {
    if (anInterface.memberFinder != null) {
      InterTypeMemberFinder finder = (InterTypeMemberFinder) anInterface.memberFinder;
      for (Iterator iter = finder.interTypeMethods.iterator(); iter.hasNext();) {
        MethodBinding aBinding = (MethodBinding) iter.next();
        if (Modifier.isPublic(aBinding.modifiers)) {
          toAList.add(aBinding);
        }
      }
    }
View Full Code Here

    List ret = new ArrayList(Arrays.asList(orig));
    // System.err.println("declared method: " + ret + " inters = " + interTypeMethods);

    for (int i = 0, len = interTypeMethods.size(); i < len; i++) {
      MethodBinding method = (MethodBinding) interTypeMethods.get(i);

      if (CharOperation.equals(selector, method.selector)) {
        ret.add(method);
      }
    }
View Full Code Here

    return (MethodBinding[]) ret.toArray(new MethodBinding[ret.size()]);
  }

  public MethodBinding getExactMethod(SourceTypeBinding sourceTypeBinding, char[] selector, TypeBinding[] argumentTypes,
      CompilationUnitScope refScope) {
    MethodBinding ret = sourceTypeBinding.getExactMethodBase(selector, argumentTypes, refScope);

    // An intertype declaration may override an inherited member (Bug#50776)
    for (int i = 0, len = interTypeMethods.size(); i < len; i++) {
      MethodBinding im = (MethodBinding) interTypeMethods.get(i);
      if (matches(im, selector, argumentTypes)) {
        return im;
      }
    }
    return ret;
View Full Code Here

    // System.err.println("adding: " + binding + " to " + sourceTypeBinding);
    // pr284862 - this can leave a broken EclipseResolvedMember with an orphan method binding inside...ought to repair it
    if (isVisible(binding, sourceTypeBinding)) {
      MethodBinding[] baseMethods = sourceTypeBinding.methods;
      for (int i = 0, len = baseMethods.length; i < len; i++) {
        MethodBinding b = baseMethods[i];
        sourceTypeBinding.resolveTypesFor(b); // this will return fast if its already been done.
        if (matches2(binding, b)) {
          // this always means we should remove the existing method
          if (b.sourceMethod() != null) {
            b.sourceMethod().binding = null;
          }
          sourceTypeBinding.removeMethod(i);
          // System.err.println("    left: " + Arrays.asList(sourceTypeBinding.methods));
          break;
        }
View Full Code Here

  public int removeUnusedExtraArguments() {
    int extraArgumentFlags = 0;

    this.computeJoinPointParams();
    MethodBinding binding = method.binding;

    int index = binding.parameters.length - 3;
    if (needsStaticEnclosing) {
      extraArgumentFlags |= Advice.ThisEnclosingJoinPointStaticPart;
    } else {
View Full Code Here

    if (binding == null || ignoreFurtherInvestigation)
      return;

    if (kind == AdviceKind.Around) {
      ReferenceBinding[] exceptions = new ReferenceBinding[] { upperScope.getJavaLangThrowable() };
      proceedMethodBinding = new MethodBinding(Modifier.STATIC | Flags.AccSynthetic, "proceed".toCharArray(),
          binding.returnType, resize(baseArgumentCount + 1, binding.parameters), exceptions, binding.declaringClass);
      proceedMethodBinding.selector = CharOperation.concat(selector, proceedMethodBinding.selector);
    }

    super.resolveStatements(); // upperScope);
View Full Code Here

    return this.arguments.length - 3 - ((extraArgument == null) ? 0 : 1);
    // Advice.countOnes(extraArgumentFlags);
  }

  private void generateProceedMethod(ClassScope classScope, ClassFile classFile) {
    MethodBinding binding = proceedMethodBinding;

    classFile.generateMethodInfoHeader(binding);
    int methodAttributeOffset = classFile.contentsOffset;
    int attributeNumber = classFile.generateMethodInfoAttribute(binding, false, AstUtil.getAjSyntheticAttribute());
    int codeAttributeOffset = classFile.contentsOffset;
    classFile.generateCodeAttributeHeader();
    CodeStream codeStream = classFile.codeStream;
    codeStream.reset(this, classFile);

    // push the closure
    int nargs = binding.parameters.length;
    int closureIndex = 0;
    for (int i = 0; i < nargs - 1; i++) {
      closureIndex += AstUtil.slotsNeeded(binding.parameters[i]);
    }

    codeStream.aload(closureIndex);

    // build the Object[]

    codeStream.generateInlinedValue(nargs - 1);
    codeStream.newArray(new ArrayBinding(classScope.getType(TypeConstants.JAVA_LANG_OBJECT,
        TypeConstants.JAVA_LANG_OBJECT.length), 1, classScope.environment()));

    int index = 0;
    for (int i = 0; i < nargs - 1; i++) {
      TypeBinding type = binding.parameters[i];
      codeStream.dup();
      codeStream.generateInlinedValue(i);
      codeStream.load(type, index);
      index += AstUtil.slotsNeeded(type);
      if (type.isBaseType()) {
        codeStream.invokestatic(AjTypeConstants.getConversionMethodToObject(classScope, type));
      }

      codeStream.aastore();
    }

    // call run
    ReferenceBinding closureType = (ReferenceBinding) binding.parameters[nargs - 1];
    MethodBinding runMethod = closureType.getMethods("run".toCharArray())[0];
    codeStream.invokevirtual(runMethod);

    TypeBinding returnType = binding.returnType;
    if (returnType.isBaseType()) {
      codeStream.invokestatic(AjTypeConstants.getConversionMethodFromObject(classScope, returnType));
View Full Code Here

TOP

Related Classes of org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.