Skip to content
PaskalCPP
Reference

Reference

The words, directives, intrinsics and diagnostic codes of PaskalCPP, read from the compiler's own tables each time these docs are built.

Words

Keywords

module exe dll lib unit import initialize finalize begin end var const type routine forward method exported clink cpplink external record object overlay choices array of ptr to set packed align if then else while do for downto repeat until match guard except finally return leave skip or and xor not in shl shr div mod address true false nil self parent varargs test cpp cppstart cppend

Builtin types

int8 int16 int32 int64 uint8 uint16 uint32 uint64 float32 float64 bool char wchar string wstring

Operators

+ - * / % = <> < > <= >= := += -= *= /= %= &= |= <<= >>= ^ | & ~ ! && || ++ -- << >> -> ::

Delimiters

: . .. ... , ; ( ) [ ]

Context words

init done embed implements interface property read write hidden virtual override final abstract copy own ref weak is as operator default

Directives

A main-module-only directive is an error in a unit. A repeatable one may be written more than once.

Build directives

DirectiveArgumentValuesWhereTimes
@optimizean identifierdebug safe fast smallmain module onlyonce
@subsysteman identifierconsole guimain module onlyonce
@targeta string literalany moduleonce
@addverinfoan identifieron offmain module onlyonce
@unitTestModean identifieron offmain module onlyonce
@vimajoran integer without a suffixmain module onlyonce
@viminoran integer without a suffixmain module onlyonce
@vipatchan integer without a suffixmain module onlyonce
@viproductnamea string literalmain module onlyonce
@videscriptiona string literalmain module onlyonce
@vifilenamea string literalmain module onlyonce
@vicompanynamea string literalmain module onlyonce
@vicopyrighta string literalmain module onlyonce
@exeicona string literalmain module onlyonce
@copydlla string literalany modulerepeatable
@linklibrarya string literalany modulerepeatable
@addlibrarypatha string literalany modulerepeatable
@addmodulepatha string literalmain module onlyrepeatable
@addincludepatha string literalany modulerepeatable
@addsourcefilea string literalany modulerepeatable
@cppdefinea string literal, then optionally a second oneany modulerepeatable
@cppundefa string literalany modulerepeatable
@breakpointno argumentany module, also as a statementrepeatable
@messagea severity (hint, warn, error, fatal) and a string literalany module, also as a statementrepeatable
@outputpatha string literalmain module onlyonce

Conditional directives

@define @undef @ifdef @ifndef @elseif @else @endif

Intrinsics

The arguments column is the list the compiler names when a call does not fit.

IntrinsicArgumentsValue
len(string, wstring or array)int64
size(a type)int64
utf8(wstring)string
paramcount()int32
paramstr(int32)string
getmem(int64)ptr
freemem(pointer)none (a statement)
resizemem(pointer, int64)ptr
setlength(dynamic array or string variable, int64)none (a statement)
create(record, overlay or C/C++ pointer variable)none (a statement)
destroy(record, overlay or C/C++ pointer)none (a statement)
raise(string)none (a statement)
raisecode(int32, string)none (a statement)
exccode()int32
excmsg()string
printchecked by its own rulenone (a statement)
printlnchecked by its own rulenone (a statement)
testAssert(bool)none (a statement)
testAssertTrue(bool)none (a statement)
testAssertFalse(bool)none (a statement)
testAssertNil(pointer)none (a statement)
testAssertNotNil(pointer)none (a statement)
testFail(string)none (a statement)
testAssertEqualInt(int64, int64)none (a statement)
testAssertEqualUInt(uint64, uint64)none (a statement)
testAssertEqualFloat(float64, float64)none (a statement)
testAssertEqualStr(string, string)none (a statement)
testAssertEqualBool(bool, bool)none (a statement)
testAssertEqualPtr(pointer, pointer)none (a statement)
alive(weak T)bool
lock(weak T)ref T

Diagnostics

Every code the compiler reports, with the messages it reports it with. A … stands for the part the compiler fills in: a name, a type, a number.

LX

Reported by Lexer.

CodeMessage
LX0001Unterminated string or character literal
LX0002Unterminated raw string literal
LX0003Unterminated block comment
LX0004Invalid character in source: …
LX0005Malformed numeric literal: …
LX0006Numeric literal out of range: …
LX0006Numeric literal out of range: … does not fit int64, and a decimal literal is unsigned only with a u suffix; write …
LX0007Invalid digit in octal literal: …
LX0008'…' must be the first token on its line
LX0009'@' must be followed by a directive name
LX0010Invalid raw string delimiter (at most 16 characters; no space, parenthesis, backslash or control character)
LX0011Invalid UTF-8 byte sequence
LX0012Cannot read source file "…": …
LX0013'cppstart' block has no matching 'cppend'
LX0014'cppstart' block ends in a line splice that would join the next emitted line
LX0101Leading zero: … is an octal literal
LX0201Backslash and newline separated by space
LX0202Escaped newline between */ characters at block comment end
LX0203'/*' within block comment

CD

Reported by Conditionals.

CodeMessage
CD0001… needs an identifier
CD0002… without a matching @ifdef or @ifndef
CD0003… after @else
CD0004… is not closed by @endif
CD0005@target must stand in the directive prologue, right after the module header
CD0006@target cannot stand inside a conditional branch
CD0007@target must come before the first conditional directive
CD0008@target is given more than once
CD0009@target needs a plain string literal
CD0010Malformed target triple "…": expected arch-vendor-os-env or arch-os-env
CD0011Target "…" is not supported; supported targets: …
CD0012Imported module target "…" differs from the main module target "…"

PR

Reported by Parser.

CodeMessage
PR0001expected …, found '…'
PR0002expected a module kind (exe, dll, lib, unit), found '…'
PR0003module name '…' must match its file name '…'
PR0004a unit cannot be the main module
PR0005unknown build directive '@…'
PR0006'@…' expects …
PR0007'@message' severity must be hint, warn, error or fatal, found '…'
PR0008build directives stand only in the directive prologue
PR0009invalid string literal: …
PR0010import must follow the directive prologue, in one import clause
PR0011import cycle: …
PR0012unit '…' not found (searched: …)
PR0013'…' is a … module; only units can be imported
PR0014duplicate import '…'
PR0015expected header or source after '…', found '…'
PR0016a … module has no begin body
PR0017an exe module needs a begin body
PR0018initialize and finalize stand at most once each, initialize first
PR0019test blocks follow the module's end.
PR0020unexpected '…' after the module's end
PR0021string literal: …
PR0022'@…' path '…' cannot be resolved: …
PR0023'@…' is set by the main module only; a unit cannot set it
PR0024'exported' must precede a var, const or type block, a routine or a forward, found '…'
PR0025a method body takes only var blocks before its begin, found '…'
PR0025a test takes at most one var block before its begin, found '…'
PR0026a '…' type is declared in a type block (type TName = ...;) and used by its name
PR0027'…' is a PaskalCPP type and takes no C++ '*'; write ptr to …
PR0027'…' is a PaskalCPP type and takes no C++ '…'; pass it as a var or const parameter
PR0027'…' is a PaskalCPP type and takes no C++ '…'; use the C++ type (int32_t, std::string) there
PR0027'…' is a PaskalCPP type: new takes a C++ type name (int32_t, std::string)
PR0028'…' is a qualified PaskalCPP name and takes no C++ '*'; write ptr to …
PR0028'…' is a qualified PaskalCPP name and takes no C++ '…'
PR0029'…' is repeated
PR0030a reference (& or &&) stands last and once, found '…'
PR0031template arguments not closed: expected '>', found '…'
PR0032'…' is out of order: a record takes (parent), packed, align(...), in that order, each once
PR0033'…' is not allowed on …
PR0034'…' is not allowed in …
PR0034an interface holds methods and properties only: field '…' is not allowed in it
PR0035choices need at least one value
PR0036'…' must be followed by a name, found '…'
PR0037'decltype' needs a balanced ( ... ), found '…'
PR0038comparisons do not chain; join them with and, found '…'
PR0039'…' is C++: PaskalCPP writes …
PR0040'…' is C++: PaskalCPP writes …
PR0041'…(...)' takes exactly one argument
PR0042nested too deeply: more than … levels
PR0043'…' takes exactly one type in < >, found '…'
PR0044a lambda needs a { ... } body, found '…'
PR0045'…' needs parentheses: write …(...), found '…'
PR0046a line break in cpp("...") would break the line mapping; use a raw string, cpp(R"(...)")
PR0047expected an expression after the cast, found '…'
PR0048'=' compares and assigns nothing: use ':='
PR0049'…' is a C++ statement, not allowed in a body: use …
PR0050'cpp header' / 'cpp source' set the placement at module level only; in a body C++ stays in place
PR0051a cppstart block in a body stays in place: write 'cppstart source'
PR0052a guard needs 'except', 'finally' or both
PR0053a set names its range or element type: declare 'TName = set of 0..255;' or 'set of <type>' in a type block
PR0054invalid character literal: …
PR0055'…' is not a library name: … takes a name such as m or user32, never a file or a path
PR0056module path '…' cannot be resolved: …
PR0057'exported' is written at module level only: a '…' block here is the body's own
PR0058'…' does not go before init, copy or done: they are never hidden, virtual, override or final
PR0059a done has no parameters and no result type: write done;
PR0059a copy has no result type and no '...': write copy(const ASource: <its type>);
PR0059an init has no result type and no '...': write init(<parameters>);
PR0060an interface property's accessors have no body: write property …: <type> read; [write;] and implement it in the object
PR0060an interface method has no body: write method <name>(<parameters>)[: <type>]; and implement it in the object
PR0061property '…' starts its accessors with read, found …: write read <field>; or read begin ... end;
PR0061the index of '…' is one parameter, [const AIndex: <type>], found …
PR0061indexed property '…' has accessor bodies: a field holds no index (write read begin ... end;)
PR0061the write of '…' takes a field name or a value name and a body, found …: write write <field>; or write(AValue) begin ... end;
PR0061the read of '…' takes a field name or a body, found …: write read <field>; or read begin ... end;
PR0062a type declares operator + - * / div mod = <> < <= > >= or in, found …
PR0062an operator takes its operands only: write operator <op>(<parameters>): <type>; without ...
PR0063'…' is never closed: its '…' is missing
PR0064character literal: …

SM

Reported by Semantics.

CodeMessage
SM0001'…' is used in its own declaration
SM0002'…' is used before its declaration: declare it first or add forward
SM0003type '…' names itself: declare it first or add forward
SM0004'…' is already declared in this scope
SM0005'…' has no '…'
SM0006'…' is not exported by '…'
SM0007'…' is this module's own name, not an imported module: its declarations are reached without it, write '…'
SM0007'…' is not an imported module
SM0008a qualified type has exactly two parts: Module.Type
SM0009'…' has no member '…'
SM0010choices '…' has no value '…'
SM0011'…' outside a method
SM0012parent: '…' has no parent type
SM0013'…' is not a type
SM0014'…' is a module or a type: reach its names with '.'
SM0015'…' is a choice value: write …
SM0016'parent' reaches the parent's members: write parent.<member>
SM0017'…': names starting with … are reserved for the compiler
SM0018'…' is a member of '…': write self.…
SM0019'…' is hidden in '…': only the methods of '…' and of its descendants reach it
SM0019'…' is hidden in '…': a method of '…' reaches it only through self or a '…' value
SM0020'…' is in '…' and '…': write ….… or ….…
SM0100'…' is no longer a value of @…: write '…'
SM0100'…' is not a value of @…: …
SM0101@… takes 0..65535, got …
SM0102@… is already given at line …
SM0103@… does not apply to …: not used
SM0104@… has no effect without @addverinfo on
SM0105'…' is not an existing file
SM0106'…' is not an existing directory
SM0107cannot check '…': …
SM0108…
SM0109@breakpoint in the prologue has no effect
SM0110@unitTestMode in a dll or lib module: no program runs the tests
SM0111a test name is empty
SM0112test '…' is already declared at line …
SM0113test blocks of a dll or lib module never run
SM0114'…' is not a source file the toolchain compiles: the extension, exact case, must be one of …
SM0115'…' is not a C/C++ macro name: a letter or _, then letters, digits and _
SM0116'…' is reserved: … names belong to the compiler and the runtime
SM0117the value of @cppdefine "…" is more than one line
SM0118… conflicts with … at …:…: one name has one meaning in the build
SM0200overload set '…' has no member of type '…'
SM0200'…' does not convert implicitly to '…'
SM0200… does not fit in '…' (…..…)
SM0200'…' does not convert implicitly to '…'; write …
SM0202… must be a constant
SM0250operator '…' does not take '…'
SM0250operator '…' does not take '…' and '…'
SM0251'…' would convert signed '…' to unsigned '…': write …(...)
SM0252operator '…' cannot compare '…': an object compares only through an operator its type declares (operator = / <> / < / <= / > / >=)
SM0252operator '…' cannot compare '…': records and overlays are not comparable, compare their fields
SM0253'…' is an untyped ptr and points at no type: cast it to a typed pointer first (ptr to T(…))
SM0254'…' has no address: only a variable, a field, an element or a dereference has one
SM0255'…' cannot be assigned
SM0256constant overflows '…'
SM0257'…' by zero
SM0258'… … -1' overflows '…'
SM0259shift count … outside 0..…
SM0260'…' cannot be indexed
SM0261an index of '…' is a '…' value, got '…'
SM0261an index is an integer, got '…'
SM0263a condition is bool, got '…'
SM0265'…' cannot be cast to '…': a pointer cast takes a pointer that keeps const, or an integer of pointer width
SM0266'…' is not an ordinal type: a set holds integers, chars, bools or choices
SM0266set literal elements are of different ordinal types: '…' and '…'
SM0267low bound … exceeds high bound …
SM0268'in': '…' is not the element type of '…'
SM0269'…' is a type, not a value
SM0269'…' is a module, not a value
SM0270cannot take the address of '…': a packed record holds it, it may be misaligned
SM0270'…' cannot write to '…': a packed record holds it, it may be misaligned
SM0270'…' cannot be used as '…': packed '…' holds that part, it may be misaligned
SM0270var parameter '…' cannot take '…': a packed record holds it, it may be misaligned
SM0270reference parameter '…' cannot take '…': a packed record holds it, it may be misaligned
SM0271'…' tests a polymorphic object (one with a virtual method) or a ptr to, own or ref of one; '…' is …
SM0272'… …': '…' is not an object or an interface type
SM0273'…' never holds: a … is never a …
SM0274'…' holds exactly a …, never a …: only a var or const parameter, a deref, self, or a ptr, own or ref may hold a descendant
SM0275'…' is a weak: test lock(…) instead
SM0276index … is outside '…' (…..…)
SM0277'…' is too large: a type holds at most … bytes
SM0300'…' is only forward-declared: use ptr to '…' or declare it first
SM0301an external variable takes no initializer
SM0302an external variable is declared at module level only
SM0303forward type '…' has no full declaration here
SM0304'…' is already declared: a forward after its full declaration declares nothing
SM0305a forward type is completed by a record, object or overlay
SM0306forward and full declaration of '…' differ: …
SM0307forward routine '…' has no matching full declaration
SM0308'…' is an interface: an object names it after implements, not as its parent
SM0308'…' cannot be the parent of …
SM0309'…' reuses a name of the parent chain
SM0310align … is not a power of two
SM0311align … is below the natural alignment … of '…', lower it with packed
SM0312align … exceeds …
SM0313field '…' of '…' cannot share an overlay's storage: '…' holds a string or dynamic array, hold a ptr to it
SM0313field '…' of '…' cannot share an overlay's storage: '…' is not plain data, hold a ptr to it
SM0314a bitfield is an integer, bool, char, wchar or choices field
SM0315bitfield width … outside 1..…
SM0316bitfield width … does not hold the ordinals of '…' as signed values
SM0318a set of integers names its range: set of 0..255
SM0319set of wchar: its size differs by target: write set of 0..65535
SM0320set range bounds are of different ordinal families
SM0321a set has at most … members, this one …
SM0322array bounds are integer, char or choices of one family
SM0323'…' is overloaded: C linkage dropped, it gets C++ linkage
SM0324'…' is already declared with these parameter types: overloads differ in their parameter types
SM0325'…' has C linkage and a body: it needs a fixed parameter before '...' (C reads the extra arguments from the last fixed one)
SM0326'…' must be a const string (external library)
SM0327'…' is not a library name: external takes a name such as m or user32, never a file or a path
SM0328low bound … is above high bound …
SM0329a set element is char, bool or choices: '…' is not
SM0330'…' is variadic: a variadic routine cannot share its name with another routine
SM0331field '…' of packed record '…' cannot be packed: '…' holds a string or dynamic array
SM0331field '…' of packed record '…' cannot be packed: '…' is not plain data
SM0331the parent of packed record '…' cannot be packed: '…' holds a string or dynamic array
SM0331the parent of packed record '…' cannot be packed: '…' is not plain data
SM0332'…' is virtual in '…': write 'override method …'
SM0332'…' is virtual in '…': write 'override property …'
SM0333'…' overrides nothing: no level above '…' has a virtual method '…'
SM0333'…' overrides nothing: no level above '…' has a virtual property '…'
SM0334'…' overrides no virtual '…' of '…': take its parameters, result and const (write 'override const method …' when it is const)
SM0334'…' must take the parameters and return the type of '….…' it overrides
SM0334'…' must have the type and index of '….…' it overrides
SM0334'…' has a write, and '….…' it overrides has none: an override restates the read, and its write only where the base has one
SM0335'….…' is final: it cannot be overridden
SM0336'final' closes a virtual method: write 'virtual final method' or 'override final method'
SM0336'final' closes a virtual property: write 'virtual final property' or 'override final property'
SM0337an abstract method is virtual: write 'virtual method …'
SM0337an abstract accessor is virtual: write 'virtual property …'
SM0338'…' is an interface: it is reached through var, const, ptr to, own or ref, never held by value or created
SM0338'…' is abstract ('….…' has no body): it cannot be held by value or created
SM0339'…' is final: no type may extend it
SM0340'….…' is abstract: it has no body to call
SM0341'…' declares done twice: an object has one done
SM0342init runs when an object is built: it is never called (only parent.init(...) and self.<field>.init(...) begin an init)
SM0342copy runs when an object is copied (:=, a value argument): it is never called
SM0343done runs when an object ends: it is never called
SM0344parent.init(...) is the first statement of an init
SM0345self.….init(...) is written twice: a field is built once
SM0345self.….init(...) comes after self.….init(...): fields are built in declaration order
SM0346'…' does not exist yet: the arguments of …(...) run before the object is built
SM0347'…' has no init without arguments: begin every init of '…' with parent.init(...)
SM0347field '…': '…' has no init without arguments: begin every init of '…' with self.….init(...)
SM0348'…' is virtual: in an init or a done a call does not dispatch, call a plain method or parent.…()
SM0349'…' has no init without arguments: build it with arguments, …(...)
SM0350'…' takes no init arguments: only an object has an init
SM0351'…' declares no init: it is built without arguments
SM0351no init of '…' takes (…)
SM0352the arguments (…) fit more than one init of '…': convert them to pick one
SM0353copy takes one const parameter of its own type: write copy(const ASource: …);
SM0354'…' declares copy twice: an object has one copy
SM0355'…' cannot copy its parent part: '…' cannot be copied (give it a copy)
SM0356copy copies the parent part with the parent's own copy: parent.init(...) is not written in a copy
SM0357field '…': a record or an overlay holds no object ('…' is one): it is plain data, hold a ptr to the object
SM0357field '…': a record or an overlay holds no object ('…' holds one): it is plain data, hold a ptr to the object
SM0358'…': own, ref and weak hold an object, and '…' is none
SM0359'…' builds nothing: a weak watches an object a ref holds (build it with ref …(...))
SM0360'….…': a weak may watch an object that is gone: read it through lock(…), which is nil then
SM0361create does not build an object ('…' is one): write own …(...) or ref …(...)
SM0361destroy does not free an object ('…' is one): the own or ref that holds it frees it
SM0362'…' is not an interface: implements names interfaces only
SM0363'…' is named twice after implements of '…'
SM0364'…' does not implement '….…': declare virtual method … with its parameters and result
SM0364'…' does not implement '….…': declare virtual property … with its type and accessors
SM0365'….…' implements '….…': write 'virtual method …'
SM0365'….…' implements '….…': write 'virtual property …'
SM0366'….…' does not implement '….…': its parameter modes, types and result differ
SM0366'….…' does not implement '….…': its type, index or write differ
SM0367'….…' implements '….…': an interface member is never hidden
SM0368method '…' of interface '…' is already declared by its parent '…'
SM0369embed '…' holds '…': an embed is a record, an overlay or an object, whose members its object reaches
SM0370'…' is reached through two embeds, '…' and '…': name one, as ….….…
SM0370'…' does not implement '….…': two embeds, '…' and '…', have it; declare virtual method …
SM0371property '…' binds '…', which is no field of '…': name a field, or write the accessor with a body
SM0372property '…' is '…', and its field '…' is '…': a bound field has the property's type
SM0373the read of '…' cannot change '…': a read changes nothing of its object
SM0373the read of '…' cannot call method '…' through self: a read changes nothing of its object
SM0374the read of '…' reads the property again, forever: read its field
SM0374the write of '…' assigns the property again, forever: assign its field
SM0375property '…' has no write: it is read-only
SM0376'…' is a property, not storage: … needs a variable (read it into one, or assign the property)
SM0377an assignment to property '…' is a statement: its write has no value
SM0378property '…' is indexed: write …[<index>]
SM0379property '…' has no index: default names an indexed property, which LO[i] means
SM0379property '…' is a second default of '…': '…' is its default already
SM0380operator … takes …
SM0381operator … of '…' takes no '…': one of its operands is the type that declares it
SM0382operator … gives a bool, not '…'
SM0383operator … of '…' is declared twice with these operand types
SM0384operator … takes its operands by value or const, not var ('…')
SM0386operator … of '…' needs its pair: declare operator … with the same operand types
SM0387'…' is a const method: it cannot change '…' (it changes nothing of its object)
SM0388'…' is a const method: it cannot call '…' through self, which is not const
SM0389'…' must be …, as '…' of '…' is: an override or an implementing method keeps the const of the method it continues
SM0400'…' is not callable: its type '…' is not a routine type
SM0401'…' takes at least … argument(s), … given
SM0401'…' takes … argument(s), … given
SM0402no overload of '…' takes (…)
SM0404argument … of '…': overload set '…' has no member of type '…'
SM0404argument … of '…': '…' does not convert implicitly to '…'
SM0404argument … of '…': … does not fit in '…' (…..…)
SM0404argument … of '…': '…' does not convert implicitly to '…'; write …
SM0405var parameter '…' needs a variable of type '…'
SM0406'…' calls a procedure: it has no value
SM0408'…' is a statement, not a value
SM0409'…' takes …
SM0410size needs a type, got the value '…'
SM0411'…' takes no type argument: only size does
SM0412a cast '…(...)' takes exactly one argument, given …
SM0413a record literal needs a record with no C/C++ parent: '…' is not one
SM0414record literal: '…' has no field '…'
SM0415record literal: field '…' is given twice
SM0416record literal: '…' comes before '…' in '…'
SM0417… outside a variadic routine
SM0418….… needs a cpplink variadic: a C caller passes no types or count
SM0421'…' is not a value: use ….…, …, …, … or …
SM0422'…' is only the type of a variadic routine's local, set from a …()
SM0423'…' is an intrinsic: it is called, never used as a value
SM0424'…' is a value, not a call: write it without ()
SM0425'…' cannot be printed: the C/C++ type has no std::formatter
SM0425'…' cannot be printed: print the fields of a record, object or overlay
SM0425'…' cannot be printed: an overload set or a method has no single address
SM0426method '…' may change its object, which is const here: pass it var
SM0427'…' would be copied here, and '…' cannot be copied (an own is the sole owner of its object): pass it var / const, return it from a local, or hold a ref
SM0427'…' would be copied here, and '…' cannot be copied: pass it var / const, return it from a local, or give '…' a copy
SM0428'…' would be cut down to its '…' part here (it is polymorphic): pass it var / const, or through a pointer
SM0428'…' may hold a descendant of '…' (it is polymorphic): a copy keeps only its '…' part; pass it var / const, or through a pointer
SM0429'…' may hold a descendant of '…' (it is polymorphic): assigning to it would replace only its '…' part; set its fields instead
SM0430no operator … declared for these operands takes (…)
SM0431several operators … take (…) alike: give the operands their exact parameter types
SM0432'…' is a method: it runs on its object and has no routine value, call it
SM0500format string '…' is not a string literal or a string const holding one: a format string is checked against its arguments when the program is built
SM0502format string … does not fit the … argument(s) after it: each {} takes the next argument, and its format spec must suit that argument's type
SM0600for needs a variable: '…' is …
SM0601a for iterator is an integer, char, wchar or a choice, got '…'
SM0602'…' is the for iterator: the loop body cannot write it
SM0603a match subject is an integer, char, wchar or a choice, got '…'
SM0604match label … is outside '…': it never matches
SM0605match label … repeats a label of the arm at line …
SM0606match on '…' does not cover: …
SM0607leave outside a loop or match
SM0608skip outside a loop
SM0609… cannot jump out of finally
SM0610return needs a value of type '…'
SM0611return takes no value here
SM0612missing return: '…' can reach its end without returning a value
SM0613statement has no effect
SM0614C++ … in a finally body leaves only the finally's hidden function
SM0614C++ … in the except body of a guard with finally leaves only the except's hidden function
SM0614C++ … in a guard body leaves only the guard's hidden function
SM0615'…' outside an except body

EM

Reported by Emitter.

CodeMessage
EM0001Cannot create the output folder '…': …
EM0002Cannot write '…': …
EM0003Internal error while emitting module '…': …

CMP

Reported by Compiler.

CodeMessage
CMP0001cannot use the path …: …
CMP0001source file not found: …
CMP0001bad value '…' for option … (expected …)
CMP0001'…' is no longer a value of option …: write '…'
CMP0001unknown option '…'
CMP0002a … cannot be run: auto-run skipped
CMP0003internal error: …
CMP0004cannot remove the stale runtime library … (this lib no longer uses the runtime): …
CMP0005cannot write the output record …: … (pcpp --clean will refuse this folder)
CMP0006refusing to clean …: …
CMP0006cannot use the folder …: …

ZB

Reported by BuildOutput, ZigBuild.

CodeMessage
ZB0001No output path specified.
ZB0002No source files specified.
ZB0003Failed to save build file: …
ZB0004Zig compiler not found: …
ZB0005a line zig printed for a failed build that no reported error explains
ZB0005Zig build failed with exit code ….
ZB0006Cannot run cross-compiled target: …
ZB0007Failed to add manifest to executable: …
ZB0008Failed to apply icon …: …
ZB0008Icon file not found: …
ZB0009Failed to apply version info: …
ZB0010Failed to publish to …: …
ZB0011Cannot read the diagnostics file …: …
ZB0012Cannot prepare the diagnostics file …: …
ZB0013Failed to clear …: …
ZB0014Failed to copy …: …
ZB0015Build file not found: …
ZB0015Failed to read build file …: …
ZB0016the C/C++ toolchain's own message (clang, the linker or zig), mapped to the .pcpp file
ZB0017Cannot read … (left unchanged; using the default toolchain path): …
ZB0017…: toolchain_path '…' is not a usable path (using the default toolchain path): …
ZB0017Not saving …: it could not be read, so it is left unchanged
ZB0017Cannot write …: …
ZB0019Icon ignored: target … does not take Windows resources
ZB0019Version info ignored: target … does not take Windows resources
ZB0019Icon ignored: only an executable takes an icon
ZB0019Version info ignored: a static library takes no resources
ZB0020Invalid … "…": …
ZB0020Invalid project name "…": a project name must be a valid file name
ZB0021Output folder too long for the zig toolchain (… characters, the limit is …): …
ZB0022Unknown target "…": a target is <arch>-<os>[-<abi>] in zig's names, e.g. x86_64-windows-gnu
ZB0023Line … of … is not a line PaskalCPP writes; it is ignored: …
ZB0024An empty … was given: nothing to copy
ZB0025… and … would both be copied to …: neither is copied
ZB0026File to copy not found: …
ZB0027Cannot run a library target.
ZB0028No project name specified.
ZB0029Executable not found: …
ZB0030Cannot start …: …
ZB0031Program exited with code ….
ZB0032Cannot start zig (…): …
ZB0033Not a source file the toolchain compiles: … (the extension, exact case, must be one of …)
ZB0034Could not read the record of earlier build files …: files it names are not removed: …
ZB0034Could not write the record of build files …: a later build cannot remove them: …
ZB0034Could not remove the old record … (replaced by …): …
ZB0034Could not remove … (an earlier build put it there, this build does not produce it): …

DB

Reported by Debug.Runtime, Debug.Symbols, Debug.Target.

CodeMessage
DB0001Program to debug not found: …
DB0002Host program not found: …
DB0003Cannot start … under the debugger: …
DB0004The debug loop failed: …
DB0005The symbol handler is not open
DB0005The symbol handler cannot start: …
DB0006No line numbers for …: its .pdb must be beside it (build with -opt debug)
DB0008Cannot patch the program's code at $…: …
DB0009Cannot get or set the context of thread …: …
DB0010Cannot load the symbols of …: …
DB0010Symbol lookup failed (…): …
DB0011No code at …:…
DB0012Debugging needs the … target; this program builds for …
DB0014The host exited (code …) before it loaded …
DB0015No sources for the program: C++ names and types are shown
DB0016The program is running: the command needs it stopped
DB0017Cannot pause the program: …
DB0018… did not reach its entry stop
DB0019Cannot read … (C++ names are shown for it): …