Clause
← All documentation

Deferred-feature reporting

Legal Erlang that needs an unimplemented feature fails with one explicit message, distinct from ordinary invalid-input errors. Supported generic fallback (for example skipped specialization) is silent and not a failure.

[pattern matching] notimpl: src/example.erl:12:5 [module="example"] [target="native"] [operation="match argument"]

Catalog

features.hpp assigns stable, never-reused IDs and diagnostic names, with owner and status per entry. Retire or refine an entry when its feature lands; keep its ID reserved.

OwnerWhere it reports
Compiler semantic analysisCapability checks over every function, including unused code
Compiler loweringDefensive rejection at reached operations; clears staged artifacts
DriverNothing deferred: executable linking is implemented (linking)
Runtime servicesSee runtime deferred services

Deferred compiler features today, each covered by codegen_placeholders:

FeatureExample that reports it
heap expressionscompr_assign comprehension assignments ([Y || X <- L, Y = X])
dynamic callsA builtin fun of apply (fun erlang:apply/2)
behavior-changing attributes-on_load, -nifs, non-inert -compile options, parameterized modules (accepted subset)

Message rules