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)