Class IsSynthesisedMember

java.lang.Object
org.ek9lang.compiler.phase7.support.IsSynthesisedMember
All Implemented Interfaces:
Predicate<String>

public final class IsSynthesisedMember extends Object implements Predicate<String>
THE compiler-synthesised MEMBER set - _i_init, _c_init, _fieldSetStatus, _copyAccepts, _base (Steve, F3a 2026-10-08: one predicate, widened from the lifecycle pair) - hold one and ask it, never a second list.

NOT plumbing (CompilerPlumbingCalls): each has a real body in the IR of the same construct (the field initialisers the user wrote, the generated field-status bitmap, the generated copy check), so an IR reader resolves the call to that body. They are listed here because, like plumbing, they have no symbol and phase 5 never measures them, so their CALL carries no metadata clause - and is CallDetails.Kind.SYNTHESISED_MEMBER, never UNRESOLVED.

Matching by name is sound because a user cannot declare a method of any of these names: a leading _ cannot start an EK9 identifier, and none of them is ever defined into a symbol table (no symbol is the definition - that is what puts them here). (_i_init/_c_init were i_init/c_init until 2026-09-25, which a user COULD write - see docs/implementation/EK9_LIFECYCLE_METHOD_RENAME_PLAN.md.) A new compiler-synthesised member with no symbol joins this set, never a second list.

  • Constructor Details

    • IsSynthesisedMember

      public IsSynthesisedMember()
  • Method Details

    • test

      public boolean test(String methodName)
      Specified by:
      test in interface Predicate<String>
      Parameters:
      methodName - the method being called (may be null)
      Returns:
      true for a compiler-synthesised member that has no symbol