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
| Directive | Argument | Values | Where | Times |
|---|---|---|---|---|
@optimize | an identifier | debug safe fast small | main module only | once |
@subsystem | an identifier | console gui | main module only | once |
@target | a string literal | any module | once | |
@addverinfo | an identifier | on off | main module only | once |
@unitTestMode | an identifier | on off | main module only | once |
@vimajor | an integer without a suffix | main module only | once | |
@viminor | an integer without a suffix | main module only | once | |
@vipatch | an integer without a suffix | main module only | once | |
@viproductname | a string literal | main module only | once | |
@videscription | a string literal | main module only | once | |
@vifilename | a string literal | main module only | once | |
@vicompanyname | a string literal | main module only | once | |
@vicopyright | a string literal | main module only | once | |
@exeicon | a string literal | main module only | once | |
@copydll | a string literal | any module | repeatable | |
@linklibrary | a string literal | any module | repeatable | |
@addlibrarypath | a string literal | any module | repeatable | |
@addmodulepath | a string literal | main module only | repeatable | |
@addincludepath | a string literal | any module | repeatable | |
@addsourcefile | a string literal | any module | repeatable | |
@cppdefine | a string literal, then optionally a second one | any module | repeatable | |
@cppundef | a string literal | any module | repeatable | |
@breakpoint | no argument | any module, also as a statement | repeatable | |
@message | a severity (hint, warn, error, fatal) and a string literal | any module, also as a statement | repeatable | |
@outputpath | a string literal | main module only | once |
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.
| Intrinsic | Arguments | Value |
|---|---|---|
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 |
print | checked by its own rule | none (a statement) |
println | checked by its own rule | none (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.
| Code | Message |
|---|---|
LX0001 | Unterminated string or character literal |
LX0002 | Unterminated raw string literal |
LX0003 | Unterminated block comment |
LX0004 | Invalid character in source: … |
LX0005 | Malformed numeric literal: … |
LX0006 | Numeric literal out of range: … |
LX0006 | Numeric literal out of range: … does not fit int64, and a decimal literal is unsigned only with a u suffix; write … |
LX0007 | Invalid digit in octal literal: … |
LX0008 | '…' must be the first token on its line |
LX0009 | '@' must be followed by a directive name |
LX0010 | Invalid raw string delimiter (at most 16 characters; no space, parenthesis, backslash or control character) |
LX0011 | Invalid UTF-8 byte sequence |
LX0012 | Cannot 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 |
LX0101 | Leading zero: … is an octal literal |
LX0201 | Backslash and newline separated by space |
LX0202 | Escaped newline between */ characters at block comment end |
LX0203 | '/*' within block comment |
CD
Reported by Conditionals.
| Code | Message |
|---|---|
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 |
CD0010 | Malformed target triple "…": expected arch-vendor-os-env or arch-os-env |
CD0011 | Target "…" is not supported; supported targets: … |
CD0012 | Imported module target "…" differs from the main module target "…" |
PR
Reported by Parser.
| Code | Message |
|---|---|
PR0001 | expected …, found '…' |
PR0002 | expected a module kind (exe, dll, lib, unit), found '…' |
PR0003 | module name '…' must match its file name '…' |
PR0004 | a unit cannot be the main module |
PR0005 | unknown build directive '@…' |
PR0006 | '@…' expects … |
PR0007 | '@message' severity must be hint, warn, error or fatal, found '…' |
PR0008 | build directives stand only in the directive prologue |
PR0009 | invalid string literal: … |
PR0010 | import must follow the directive prologue, in one import clause |
PR0011 | import cycle: … |
PR0012 | unit '…' not found (searched: …) |
PR0013 | '…' is a … module; only units can be imported |
PR0014 | duplicate import '…' |
PR0015 | expected header or source after '…', found '…' |
PR0016 | a … module has no begin body |
PR0017 | an exe module needs a begin body |
PR0018 | initialize and finalize stand at most once each, initialize first |
PR0019 | test blocks follow the module's end. |
PR0020 | unexpected '…' after the module's end |
PR0021 | string 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 '…' |
PR0025 | a method body takes only var blocks before its begin, found '…' |
PR0025 | a test takes at most one var block before its begin, found '…' |
PR0026 | a '…' 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 |
PR0030 | a reference (& or &&) stands last and once, found '…' |
PR0031 | template 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 … |
PR0034 | an interface holds methods and properties only: field '…' is not allowed in it |
PR0035 | choices need at least one value |
PR0036 | '…' must be followed by a name, found '…' |
PR0037 | 'decltype' needs a balanced ( ... ), found '…' |
PR0038 | comparisons do not chain; join them with and, found '…' |
PR0039 | '…' is C++: PaskalCPP writes … |
PR0040 | '…' is C++: PaskalCPP writes … |
PR0041 | '…(...)' takes exactly one argument |
PR0042 | nested too deeply: more than … levels |
PR0043 | '…' takes exactly one type in < >, found '…' |
PR0044 | a lambda needs a { ... } body, found '…' |
PR0045 | '…' needs parentheses: write …(...), found '…' |
PR0046 | a line break in cpp("...") would break the line mapping; use a raw string, cpp(R"(...)") |
PR0047 | expected 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 |
PR0051 | a cppstart block in a body stays in place: write 'cppstart source' |
PR0052 | a guard needs 'except', 'finally' or both |
PR0053 | a set names its range or element type: declare 'TName = set of 0..255;' or 'set of <type>' in a type block |
PR0054 | invalid character literal: … |
PR0055 | '…' is not a library name: … takes a name such as m or user32, never a file or a path |
PR0056 | module 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 |
PR0059 | a done has no parameters and no result type: write done; |
PR0059 | a copy has no result type and no '...': write copy(const ASource: <its type>); |
PR0059 | an init has no result type and no '...': write init(<parameters>); |
PR0060 | an interface property's accessors have no body: write property …: <type> read; [write;] and implement it in the object |
PR0060 | an interface method has no body: write method <name>(<parameters>)[: <type>]; and implement it in the object |
PR0061 | property '…' starts its accessors with read, found …: write read <field>; or read begin ... end; |
PR0061 | the index of '…' is one parameter, [const AIndex: <type>], found … |
PR0061 | indexed property '…' has accessor bodies: a field holds no index (write read begin ... end;) |
PR0061 | the write of '…' takes a field name or a value name and a body, found …: write write <field>; or write(AValue) begin ... end; |
PR0061 | the read of '…' takes a field name or a body, found …: write read <field>; or read begin ... end; |
PR0062 | a type declares operator + - * / div mod = <> < <= > >= or in, found … |
PR0062 | an operator takes its operands only: write operator <op>(<parameters>): <type>; without ... |
PR0063 | '…' is never closed: its '…' is missing |
PR0064 | character literal: … |
SM
Reported by Semantics.
| Code | Message |
|---|---|
SM0001 | '…' is used in its own declaration |
SM0002 | '…' is used before its declaration: declare it first or add forward |
SM0003 | type '…' 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 |
SM0008 | a qualified type has exactly two parts: Module.Type |
SM0009 | '…' has no member '…' |
SM0010 | choices '…' has no value '…' |
SM0011 | '…' outside a method |
SM0012 | parent: '…' 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 |
SM0107 | cannot check '…': … |
SM0108 | … |
SM0109 | @breakpoint in the prologue has no effect |
SM0110 | @unitTestMode in a dll or lib module: no program runs the tests |
SM0111 | a test name is empty |
SM0112 | test '…' is already declared at line … |
SM0113 | test 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 |
SM0117 | the value of @cppdefine "…" is more than one line |
SM0118 | … conflicts with … at …:…: one name has one meaning in the build |
SM0200 | overload 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 |
SM0250 | operator '…' does not take '…' |
SM0250 | operator '…' does not take '…' and '…' |
SM0251 | '…' would convert signed '…' to unsigned '…': write …(...) |
SM0252 | operator '…' cannot compare '…': an object compares only through an operator its type declares (operator = / <> / < / <= / > / >=) |
SM0252 | operator '…' 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 |
SM0256 | constant overflows '…' |
SM0257 | '…' by zero |
SM0258 | '… … -1' overflows '…' |
SM0259 | shift count … outside 0..… |
SM0260 | '…' cannot be indexed |
SM0261 | an index of '…' is a '…' value, got '…' |
SM0261 | an index is an integer, got '…' |
SM0263 | a 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 |
SM0266 | set literal elements are of different ordinal types: '…' and '…' |
SM0267 | low 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 |
SM0270 | cannot 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 |
SM0270 | var parameter '…' cannot take '…': a packed record holds it, it may be misaligned |
SM0270 | reference 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 |
SM0276 | index … is outside '…' (…..…) |
SM0277 | '…' is too large: a type holds at most … bytes |
SM0300 | '…' is only forward-declared: use ptr to '…' or declare it first |
SM0301 | an external variable takes no initializer |
SM0302 | an external variable is declared at module level only |
SM0303 | forward type '…' has no full declaration here |
SM0304 | '…' is already declared: a forward after its full declaration declares nothing |
SM0305 | a forward type is completed by a record, object or overlay |
SM0306 | forward and full declaration of '…' differ: … |
SM0307 | forward 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 |
SM0310 | align … is not a power of two |
SM0311 | align … is below the natural alignment … of '…', lower it with packed |
SM0312 | align … exceeds … |
SM0313 | field '…' of '…' cannot share an overlay's storage: '…' holds a string or dynamic array, hold a ptr to it |
SM0313 | field '…' of '…' cannot share an overlay's storage: '…' is not plain data, hold a ptr to it |
SM0314 | a bitfield is an integer, bool, char, wchar or choices field |
SM0315 | bitfield width … outside 1..… |
SM0316 | bitfield width … does not hold the ordinals of '…' as signed values |
SM0318 | a set of integers names its range: set of 0..255 |
SM0319 | set of wchar: its size differs by target: write set of 0..65535 |
SM0320 | set range bounds are of different ordinal families |
SM0321 | a set has at most … members, this one … |
SM0322 | array 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 |
SM0328 | low bound … is above high bound … |
SM0329 | a set element is char, bool or choices: '…' is not |
SM0330 | '…' is variadic: a variadic routine cannot share its name with another routine |
SM0331 | field '…' of packed record '…' cannot be packed: '…' holds a string or dynamic array |
SM0331 | field '…' of packed record '…' cannot be packed: '…' is not plain data |
SM0331 | the parent of packed record '…' cannot be packed: '…' holds a string or dynamic array |
SM0331 | the 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' |
SM0337 | an abstract method is virtual: write 'virtual method …' |
SM0337 | an 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 |
SM0342 | init runs when an object is built: it is never called (only parent.init(...) and self.<field>.init(...) begin an init) |
SM0342 | copy runs when an object is copied (:=, a value argument): it is never called |
SM0343 | done runs when an object ends: it is never called |
SM0344 | parent.init(...) is the first statement of an init |
SM0345 | self.….init(...) is written twice: a field is built once |
SM0345 | self.….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(...) |
SM0347 | field '…': '…' 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 |
SM0351 | no init of '…' takes (…) |
SM0352 | the arguments (…) fit more than one init of '…': convert them to pick one |
SM0353 | copy 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) |
SM0356 | copy copies the parent part with the parent's own copy: parent.init(...) is not written in a copy |
SM0357 | field '…': a record or an overlay holds no object ('…' is one): it is plain data, hold a ptr to the object |
SM0357 | field '…': 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 |
SM0361 | create does not build an object ('…' is one): write own …(...) or ref …(...) |
SM0361 | destroy 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 |
SM0368 | method '…' of interface '…' is already declared by its parent '…' |
SM0369 | embed '…' 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 … |
SM0371 | property '…' binds '…', which is no field of '…': name a field, or write the accessor with a body |
SM0372 | property '…' is '…', and its field '…' is '…': a bound field has the property's type |
SM0373 | the read of '…' cannot change '…': a read changes nothing of its object |
SM0373 | the read of '…' cannot call method '…' through self: a read changes nothing of its object |
SM0374 | the read of '…' reads the property again, forever: read its field |
SM0374 | the write of '…' assigns the property again, forever: assign its field |
SM0375 | property '…' has no write: it is read-only |
SM0376 | '…' is a property, not storage: … needs a variable (read it into one, or assign the property) |
SM0377 | an assignment to property '…' is a statement: its write has no value |
SM0378 | property '…' is indexed: write …[<index>] |
SM0379 | property '…' has no index: default names an indexed property, which LO[i] means |
SM0379 | property '…' is a second default of '…': '…' is its default already |
SM0380 | operator … takes … |
SM0381 | operator … of '…' takes no '…': one of its operands is the type that declares it |
SM0382 | operator … gives a bool, not '…' |
SM0383 | operator … of '…' is declared twice with these operand types |
SM0384 | operator … takes its operands by value or const, not var ('…') |
SM0386 | operator … 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 |
SM0402 | no overload of '…' takes (…) |
SM0404 | argument … of '…': overload set '…' has no member of type '…' |
SM0404 | argument … of '…': '…' does not convert implicitly to '…' |
SM0404 | argument … of '…': … does not fit in '…' (…..…) |
SM0404 | argument … of '…': '…' does not convert implicitly to '…'; write … |
SM0405 | var parameter '…' needs a variable of type '…' |
SM0406 | '…' calls a procedure: it has no value |
SM0408 | '…' is a statement, not a value |
SM0409 | '…' takes … |
SM0410 | size needs a type, got the value '…' |
SM0411 | '…' takes no type argument: only size does |
SM0412 | a cast '…(...)' takes exactly one argument, given … |
SM0413 | a record literal needs a record with no C/C++ parent: '…' is not one |
SM0414 | record literal: '…' has no field '…' |
SM0415 | record literal: field '…' is given twice |
SM0416 | record 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 |
SM0426 | method '…' 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 |
SM0430 | no operator … declared for these operands takes (…) |
SM0431 | several 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 |
SM0500 | format 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 |
SM0502 | format string … does not fit the … argument(s) after it: each {} takes the next argument, and its format spec must suit that argument's type |
SM0600 | for needs a variable: '…' is … |
SM0601 | a for iterator is an integer, char, wchar or a choice, got '…' |
SM0602 | '…' is the for iterator: the loop body cannot write it |
SM0603 | a match subject is an integer, char, wchar or a choice, got '…' |
SM0604 | match label … is outside '…': it never matches |
SM0605 | match label … repeats a label of the arm at line … |
SM0606 | match on '…' does not cover: … |
SM0607 | leave outside a loop or match |
SM0608 | skip outside a loop |
SM0609 | … cannot jump out of finally |
SM0610 | return needs a value of type '…' |
SM0611 | return takes no value here |
SM0612 | missing return: '…' can reach its end without returning a value |
SM0613 | statement has no effect |
SM0614 | C++ … in a finally body leaves only the finally's hidden function |
SM0614 | C++ … in the except body of a guard with finally leaves only the except's hidden function |
SM0614 | C++ … in a guard body leaves only the guard's hidden function |
SM0615 | '…' outside an except body |
EM
Reported by Emitter.
| Code | Message |
|---|---|
EM0001 | Cannot create the output folder '…': … |
EM0002 | Cannot write '…': … |
EM0003 | Internal error while emitting module '…': … |
CMP
Reported by Compiler.
| Code | Message |
|---|---|
CMP0001 | cannot use the path …: … |
CMP0001 | source file not found: … |
CMP0001 | bad value '…' for option … (expected …) |
CMP0001 | '…' is no longer a value of option …: write '…' |
CMP0001 | unknown option '…' |
CMP0002 | a … cannot be run: auto-run skipped |
CMP0003 | internal error: … |
CMP0004 | cannot remove the stale runtime library … (this lib no longer uses the runtime): … |
CMP0005 | cannot write the output record …: … (pcpp --clean will refuse this folder) |
CMP0006 | refusing to clean …: … |
CMP0006 | cannot use the folder …: … |
ZB
Reported by BuildOutput, ZigBuild.
| Code | Message |
|---|---|
ZB0001 | No output path specified. |
ZB0002 | No source files specified. |
ZB0003 | Failed to save build file: … |
ZB0004 | Zig compiler not found: … |
ZB0005 | a line zig printed for a failed build that no reported error explains |
ZB0005 | Zig build failed with exit code …. |
ZB0006 | Cannot run cross-compiled target: … |
ZB0007 | Failed to add manifest to executable: … |
ZB0008 | Failed to apply icon …: … |
ZB0008 | Icon file not found: … |
ZB0009 | Failed to apply version info: … |
ZB0010 | Failed to publish to …: … |
ZB0011 | Cannot read the diagnostics file …: … |
ZB0012 | Cannot prepare the diagnostics file …: … |
ZB0013 | Failed to clear …: … |
ZB0014 | Failed to copy …: … |
ZB0015 | Build file not found: … |
ZB0015 | Failed to read build file …: … |
ZB0016 | the C/C++ toolchain's own message (clang, the linker or zig), mapped to the .pcpp file |
ZB0017 | Cannot read … (left unchanged; using the default toolchain path): … |
ZB0017 | …: toolchain_path '…' is not a usable path (using the default toolchain path): … |
ZB0017 | Not saving …: it could not be read, so it is left unchanged |
ZB0017 | Cannot write …: … |
ZB0019 | Icon ignored: target … does not take Windows resources |
ZB0019 | Version info ignored: target … does not take Windows resources |
ZB0019 | Icon ignored: only an executable takes an icon |
ZB0019 | Version info ignored: a static library takes no resources |
ZB0020 | Invalid … "…": … |
ZB0020 | Invalid project name "…": a project name must be a valid file name |
ZB0021 | Output folder too long for the zig toolchain (… characters, the limit is …): … |
ZB0022 | Unknown target "…": a target is <arch>-<os>[-<abi>] in zig's names, e.g. x86_64-windows-gnu |
ZB0023 | Line … of … is not a line PaskalCPP writes; it is ignored: … |
ZB0024 | An empty … was given: nothing to copy |
ZB0025 | … and … would both be copied to …: neither is copied |
ZB0026 | File to copy not found: … |
ZB0027 | Cannot run a library target. |
ZB0028 | No project name specified. |
ZB0029 | Executable not found: … |
ZB0030 | Cannot start …: … |
ZB0031 | Program exited with code …. |
ZB0032 | Cannot start zig (…): … |
ZB0033 | Not a source file the toolchain compiles: … (the extension, exact case, must be one of …) |
ZB0034 | Could not read the record of earlier build files …: files it names are not removed: … |
ZB0034 | Could not write the record of build files …: a later build cannot remove them: … |
ZB0034 | Could not remove the old record … (replaced by …): … |
ZB0034 | Could not remove … (an earlier build put it there, this build does not produce it): … |
DB
Reported by Debug.Runtime, Debug.Symbols, Debug.Target.
| Code | Message |
|---|---|
DB0001 | Program to debug not found: … |
DB0002 | Host program not found: … |
DB0003 | Cannot start … under the debugger: … |
DB0004 | The debug loop failed: … |
DB0005 | The symbol handler is not open |
DB0005 | The symbol handler cannot start: … |
DB0006 | No line numbers for …: its .pdb must be beside it (build with -opt debug) |
DB0008 | Cannot patch the program's code at $…: … |
DB0009 | Cannot get or set the context of thread …: … |
DB0010 | Cannot load the symbols of …: … |
DB0010 | Symbol lookup failed (…): … |
DB0011 | No code at …:… |
DB0012 | Debugging needs the … target; this program builds for … |
DB0014 | The host exited (code …) before it loaded … |
DB0015 | No sources for the program: C++ names and types are shown |
DB0016 | The program is running: the command needs it stopped |
DB0017 | Cannot pause the program: … |
DB0018 | … did not reach its entry stop |
DB0019 | Cannot read … (C++ names are shown for it): … |