Rules / Types, classes & roles / exception

X::Undeclared Reference

Compilation error due to an undeclared symbol

What it is #

Position in the hierarchy #

Inherits from
Does
Inherited byX::Attribute::Undeclared

Routines #

Signatures are reproduced from the documentation, including their declared return types. A routine listed here is part of the type's published interface; whether Raku++ implements it is a separate question, answered by the examples below.

method symbol #

Returns the name of the undeclared symbol

method what #

Returns the kind of symbol that was not declared (for example variable, type, routine). Since The symbol wasn't declared, the compiler sometimes has to guess (or rather disambiguate) what kind of symbol it encounter that wasn't declared. For example if you write Then the disambiguation defaults to reporting a missing subroutine, even though declaring a constant a = 'a' would also make the error go away.

Examples, run three ways #

Every example below comes from the official documentation, together with the output that documentation asserts. Each was then executed by Rakudo and by Raku++ when this page was built. Where the three agree, one result is shown; where they do not, all three are — because which of them is wrong is exactly the information worth having.

4 no-output

class X::Undeclared does X::Comp {}

Not executed: the documentation states no expected output for this example.

$x;

Not executed: the documentation states no expected output for this example.

Variable $x is not declared

Not executed: the documentation states no expected output for this example.

say a;

Not executed: the documentation states no expected output for this example.