public class MethodScope extends BlockScope
Specific block scope used for methods, constructors or clinits, representing its outermost blockscope. Note also that such a scope will be provided to enclose field initializers subscopes as well.
  • Field Details

    • referenceContext

      public ReferenceContext referenceContext
    • isStatic

      public boolean isStatic
    • isConstructorCall

      public boolean isConstructorCall
    • initializedField

      public FieldBinding initializedField
    • lastVisibleFieldID

      public int lastVisibleFieldID
    • analysisIndex

      public int analysisIndex
    • isPropagatingInnerClassEmulation

      public boolean isPropagatingInnerClassEmulation
    • lastIndex

      public int lastIndex
    • definiteInits

      public long[] definiteInits
    • extraDefiniteInits

      public long[][] extraDefiniteInits
    • extraSyntheticArguments

      public SyntheticArgumentBinding[] extraSyntheticArguments
    • hasMissingSwitchDefault

      public boolean hasMissingSwitchDefault
    • isCompactConstructorScope

      public boolean isCompactConstructorScope
  • Constructor Details

    • MethodScope

      public MethodScope​(Scope parent, ReferenceContext context, boolean isStatic)
    • MethodScope

      public MethodScope​(Scope parent, ReferenceContext context, boolean isStatic, int lastVisibleFieldID)
  • Method Details

    • checkUnusedParameters

      public void checkUnusedParameters​(MethodBinding method)
    • computeLocalVariablePositions

      public void computeLocalVariablePositions​(int initOffset, CodeStream codeStream)
      Compute variable positions in scopes given an initial position offset ignoring unused local variables. Deal with arguments here, locals and subscopes are processed in BlockScope method
    • findField

      public FieldBinding findField​(TypeBinding receiverType, char[] fieldName, InvocationSite invocationSite, boolean needResolve)
      Overridden to detect the error case inside an explicit constructor call: class X { int i; X myX; X(X x) { this(i, myX.i, x.i); // same for super calls... only the first 2 field accesses are errors } }
      Overrides:
      findField in class Scope
    • isInsideConstructor

      public boolean isInsideConstructor()
    • isInsideInitializer

      public boolean isInsideInitializer()
    • isLambdaScope

      public boolean isLambdaScope()
      Overrides:
      isLambdaScope in class Scope
    • isInsideInitializerOrConstructor

      public boolean isInsideInitializerOrConstructor()
    • problemReporter

      public ProblemReporter problemReporter()
      Answer the problem reporter to use for raising new problems. Note that as a side-effect, this updates the current reference context (unit, type or method) in case the problem handler decides it is necessary to abort.
      Overrides:
      problemReporter in class BlockScope
    • recordInitializationStates

      public final int recordInitializationStates​(FlowInfo flowInfo)
    • referenceMethod

      public AbstractMethodDeclaration referenceMethod()
      Answer the reference method of this scope, or null if initialization scope or lambda scope.
    • referenceMethodBinding

      public MethodBinding referenceMethodBinding()
      Answers the binding of the reference method or reference lambda expression.
    • referenceType

      public TypeDeclaration referenceType()
      Answer the reference type of this scope. It is the nearest enclosing type of this scope.
      Overrides:
      referenceType in class BlockScope
    • hasDefaultNullnessFor

      public boolean hasDefaultNullnessFor​(int location, int sourceStart)
      Description copied from class: Scope
      Answer a defaultNullness defined for the closest enclosing scope, using bits from Binding.NullnessDefaultMASK.
      Overrides:
      hasDefaultNullnessFor in class Scope
    • checkRedundantDefaultNullness

      public Binding checkRedundantDefaultNullness​(int nullBits, int sourceStart)
      Description copied from class: Scope
      Check whether the given null default is redundant at the given position inside this scope.
      Overrides:
      checkRedundantDefaultNullness in class Scope
      Parameters:
      nullBits - locally defined nullness default, see Binding.NullnessDefaultMASK
      Returns:
      enclosing binding that already has a matching NonNullByDefault annotation, or the special binding Scope.NOT_REDUNDANT, indicating that a different enclosing nullness default was found, or null to indicate that no enclosing nullness default was found.
    • shouldCheckAPILeaks

      public boolean shouldCheckAPILeaks​(ReferenceBinding declaringClass, boolean memberIsPublic)
    • detectAPILeaks

      public void detectAPILeaks​(ASTNode typeNode, TypeBinding type)