isResolutionFailure property

bool isResolutionFailure
final

Whether this error means A NAME DID NOT RESOLVE — a member, operator, constructor or variable that the receiver does not have — as opposed to something failing inside a member that was found.

SCE77. The gap audit decides whether a member exists by classifying the error the interpreter produced, and it did that by MATCHING THE TEXT against a hand-written list of wordings. Nothing connected that list to the places the interpreter throws from, so a wording the list did not know made a whole column silently unfalsifiable: the probe ran, the error arrived, and it was scored as reachable. That happened twice in consecutive todos — SCD36's Cannot access property 'x' on target of type _Foo left the return-type pass reporting 0 of 411 while blind to every gap it existed to find, and SCD39's operator wording did the same to the operator column. Both were found by planting a defect; no passing test could have found either.

This flag is the tie. It is set by RuntimeD4rtException.resolutionFailure at the throw site, so the set of resolution failures is STRUCTURAL rather than textual and a reworded message cannot silently leave it.

WHY A FLAG AND A NAMED CONSTRUCTOR RATHER THAN A SUBTYPE. Every catch clause and every is RuntimeD4rtException test in both trees keeps working unchanged, which SCE67 established is load-bearing: the supertype there was ADDED, not swapped, precisely because the hierarchy is consulted for control flow in eight places per visitor. A new subtype would have changed what those sites see.

Implementation

final bool isResolutionFailure;