FPC conformance

Free Pascal's own test suite, run against the pxx Pascal frontend. wontfix = probes FPC internals or an intentional divergence (never counts against us); gap = a real unimplemented feature; untriaged = skip-listed, not yet classified; auto-gated = needs suite infra or other targets we don't model here. What each language targets lives under Compliance.

pass
324
fail
2
skip
gap 172 · wontfix 17 · untriaged 1
auto-gated
34
pass rate (excl. wontfix/auto)
64.9%

By category

Categorypassfailskipauto
tarray 6 12 2
tarrconstr 4 4
tcase 53 1
tclass 8 1 15 6
tdefault 12 2 1
tenum 2 5
terecs 23 9
texception 1 3 6
tforin 8 20
tgenconstraint 36 4
tgeneric 54 1 49 3
tgenfunc 5 14 1
tint64 3 1
tinterface 0 2 4
tmoperator 1 10
tobject 0 6 4
toperator 85 10 1
tover 1 3
tprocvar 0 3
tprop 2 2
trange 3 1 2
tsealed 5 1
tset 6 5 2
tstatic 4 1
tstring 2 8 1

All tests (550)

statusnamecategorytagreason
auto tarray4.pp tarray knownrunerror
auto tarray9.pp tarray opt
auto tclass1.pp tclass version
auto tclass2.pp tclass version
auto tclass4.pp tclass opt
auto tclass6.pp tclass version
auto tclass7.pp tclass version
auto tclass8.pp tclass version
auto tdefault15.pp tdefault target=darwin
auto texception4.pp texception opt
auto texception5.pp texception version
auto texception6.pp texception version
auto texception7.pp texception version
auto texception8.pp texception version
auto texception9.pp texception version
auto tgeneric104.pp tgeneric recompile
auto tgeneric74.pp tgeneric recompile
auto tgeneric75.pp tgeneric recompile
auto tgenfunc16.pp tgenfunc opt
auto tint644.pp tint64 opt
auto tinterface1.pp tinterface version
auto tinterface2.pp tinterface version
auto tinterface3.pp tinterface version
auto tinterface5.pp tinterface version
auto tobject10.pp tobject opt
auto tobject3.pp tobject opt
auto tobject8.pp tobject opt
auto tobject9.pp tobject opt
auto toperator5.pp toperator version
auto trange1.pp trange version
auto trangeob.pp trange opt
auto tset5.pp tset opt
auto tset6.pp tset opt
auto tstring6.pp tstring version
fail tclass13b.pp tclass compile error
fail tgeneric72.pp tgeneric compile error
pass tarray1.pp tarray
pass tarray10.pp tarray
pass tarray19.pp tarray
pass tarray20.pp tarray
pass tarray5.pp tarray
pass tarray8.pp tarray
pass tarrconstr2.pp tarrconstr
pass tarrconstr3.pp tarrconstr
pass tarrconstr4.pp tarrconstr
pass tarrconstr8.pp tarrconstr
pass tcase0.pp tcase
pass tcase1.pp tcase
pass tcase10.pp tcase
pass tcase11.pp tcase
pass tcase12.pp tcase
pass tcase13.pp tcase
pass tcase14.pp tcase
pass tcase15.pp tcase
pass tcase16.pp tcase
pass tcase17.pp tcase
pass tcase18.pp tcase
pass tcase19.pp tcase
pass tcase20.pp tcase
pass tcase21.pp tcase
pass tcase22.pp tcase
pass tcase23.pp tcase
pass tcase24.pp tcase
pass tcase25.pp tcase
pass tcase26.pp tcase
pass tcase27.pp tcase
pass tcase28.pp tcase
pass tcase29.pp tcase
pass tcase3.pp tcase
pass tcase30.pp tcase
pass tcase31.pp tcase
pass tcase32.pp tcase
pass tcase33.pp tcase
pass tcase34.pp tcase
pass tcase35.pp tcase
pass tcase36.pp tcase
pass tcase37.pp tcase
pass tcase38.pp tcase
pass tcase39.pp tcase
pass tcase4.pp tcase
pass tcase40.pp tcase
pass tcase41.pp tcase
pass tcase42.pp tcase
pass tcase43.pp tcase
pass tcase44.pp tcase
pass tcase45.pp tcase
pass tcase45_2.pp tcase
pass tcase46.pp tcase
pass tcase46_2.pp tcase
pass tcase47.pp tcase
pass tcase47_2.pp tcase
pass tcase48.pp tcase
pass tcase48_2.pp tcase
pass tcase5.pp tcase
pass tcase50.pp tcase
pass tcase6.pp tcase
pass tcase7.pp tcase
pass tcase8.pp tcase
pass tcase9.pp tcase
pass tclass10.pp tclass
pass tclass10a.pp tclass
pass tclass10b.pp tclass
pass tclass10c.pp tclass
pass tclass11b.pp tclass
pass tclass14a.pp tclass
pass tclass14b.pp tclass
pass tclass17.pp tclass
pass tdefault10.pp tdefault
pass tdefault11.pp tdefault
pass tdefault12.pp tdefault
pass tdefault13.pp tdefault
pass tdefault14.pp tdefault
pass tdefault2.pp tdefault
pass tdefault3.pp tdefault
pass tdefault4.pp tdefault
pass tdefault6.pp tdefault
pass tdefault7.pp tdefault
pass tdefault8.pp tdefault
pass tdefault9.pp tdefault
pass tenum4.pp tenum
pass tenum5.pp tenum
pass terecs1.pp terecs
pass terecs12.pp terecs
pass terecs12a.pp terecs
pass terecs12b.pp terecs
pass terecs12c.pp terecs
pass terecs12d.pp terecs
pass terecs13.pp terecs
pass terecs13a.pp terecs
pass terecs13b.pp terecs
pass terecs13c.pp terecs
pass terecs13d.pp terecs
pass terecs16.pp terecs
pass terecs17.pp terecs
pass terecs17a.pp terecs
pass terecs18.pp terecs
pass terecs18a.pp terecs
pass terecs19.pp terecs
pass terecs2.pp terecs
pass terecs21.pp terecs
pass terecs4.pp terecs
pass terecs5.pp terecs
pass terecs7.pp terecs
pass terecs9.pp terecs
pass texception2.pp texception
pass tforin10.pp tforin
pass tforin11.pp tforin
pass tforin18.pp tforin
pass tforin20.pp tforin
pass tforin21.pp tforin
pass tforin22.pp tforin
pass tforin23.pp tforin
pass tforin5.pp tforin
pass tgenconstraint10.pp tgenconstraint
pass tgenconstraint11.pp tgenconstraint
pass tgenconstraint12.pp tgenconstraint
pass tgenconstraint13.pp tgenconstraint
pass tgenconstraint14.pp tgenconstraint
pass tgenconstraint15.pp tgenconstraint
pass tgenconstraint16.pp tgenconstraint
pass tgenconstraint17.pp tgenconstraint
pass tgenconstraint18.pp tgenconstraint
pass tgenconstraint19.pp tgenconstraint
pass tgenconstraint2.pp tgenconstraint
pass tgenconstraint20.pp tgenconstraint
pass tgenconstraint21.pp tgenconstraint
pass tgenconstraint22.pp tgenconstraint
pass tgenconstraint23.pp tgenconstraint
pass tgenconstraint24.pp tgenconstraint
pass tgenconstraint25.pp tgenconstraint
pass tgenconstraint26.pp tgenconstraint
pass tgenconstraint27.pp tgenconstraint
pass tgenconstraint28.pp tgenconstraint
pass tgenconstraint29.pp tgenconstraint
pass tgenconstraint3.pp tgenconstraint
pass tgenconstraint30.pp tgenconstraint
pass tgenconstraint31.pp tgenconstraint
pass tgenconstraint32.pp tgenconstraint
pass tgenconstraint33.pp tgenconstraint
pass tgenconstraint34.pp tgenconstraint
pass tgenconstraint35.pp tgenconstraint
pass tgenconstraint36.pp tgenconstraint
pass tgenconstraint4.pp tgenconstraint
pass tgenconstraint40.pp tgenconstraint
pass tgenconstraint5.pp tgenconstraint
pass tgenconstraint6.pp tgenconstraint
pass tgenconstraint7.pp tgenconstraint
pass tgenconstraint8.pp tgenconstraint
pass tgenconstraint9.pp tgenconstraint
pass tgeneric100.pp tgeneric
pass tgeneric101.pp tgeneric
pass tgeneric12.pp tgeneric
pass tgeneric13.pp tgeneric
pass tgeneric17.pp tgeneric
pass tgeneric18.pp tgeneric
pass tgeneric19.pp tgeneric
pass tgeneric2.pp tgeneric
pass tgeneric22.pp tgeneric
pass tgeneric24.pp tgeneric
pass tgeneric25.pp tgeneric
pass tgeneric28.pp tgeneric
pass tgeneric31.pp tgeneric
pass tgeneric32.pp tgeneric
pass tgeneric33.pp tgeneric
pass tgeneric34.pp tgeneric
pass tgeneric35.pp tgeneric
pass tgeneric36.pp tgeneric
pass tgeneric37.pp tgeneric
pass tgeneric38.pp tgeneric
pass tgeneric39.pp tgeneric
pass tgeneric4.pp tgeneric
pass tgeneric40.pp tgeneric
pass tgeneric41.pp tgeneric
pass tgeneric42.pp tgeneric
pass tgeneric43.pp tgeneric
pass tgeneric44.pp tgeneric
pass tgeneric45.pp tgeneric
pass tgeneric46.pp tgeneric
pass tgeneric47.pp tgeneric
pass tgeneric49.pp tgeneric
pass tgeneric51.pp tgeneric
pass tgeneric52.pp tgeneric
pass tgeneric53.pp tgeneric
pass tgeneric54.pp tgeneric
pass tgeneric55.pp tgeneric
pass tgeneric56.pp tgeneric
pass tgeneric57.pp tgeneric
pass tgeneric58.pp tgeneric
pass tgeneric69.pp tgeneric
pass tgeneric70.pp tgeneric
pass tgeneric71.pp tgeneric
pass tgeneric73.pp tgeneric
pass tgeneric80.pp tgeneric
pass tgeneric81.pp tgeneric
pass tgeneric82.pp tgeneric
pass tgeneric86.pp tgeneric
pass tgeneric87.pp tgeneric
pass tgeneric88.pp tgeneric
pass tgeneric89.pp tgeneric
pass tgeneric9.pp tgeneric
pass tgeneric90.pp tgeneric
pass tgeneric96.pp tgeneric
pass tgeneric98.pp tgeneric
pass tgenfunc11.pp tgenfunc
pass tgenfunc13.pp tgenfunc
pass tgenfunc14.pp tgenfunc
pass tgenfunc17.pp tgenfunc
pass tgenfunc18.pp tgenfunc
pass tint641.pp tint64
pass tint642.pp tint64
pass tint643.pp tint64
pass tmoperator6.pp tmoperator
pass toperator10.pp toperator
pass toperator11.pp toperator
pass toperator12.pp toperator
pass toperator13.pp toperator
pass toperator14.pp toperator
pass toperator15.pp toperator
pass toperator16.pp toperator
pass toperator17.pp toperator
pass toperator18.pp toperator
pass toperator19.pp toperator
pass toperator20.pp toperator
pass toperator21.pp toperator
pass toperator22.pp toperator
pass toperator23.pp toperator
pass toperator24.pp toperator
pass toperator25.pp toperator
pass toperator26.pp toperator
pass toperator27.pp toperator
pass toperator28.pp toperator
pass toperator29.pp toperator
pass toperator30.pp toperator
pass toperator31.pp toperator
pass toperator32.pp toperator
pass toperator33.pp toperator
pass toperator34.pp toperator
pass toperator35.pp toperator
pass toperator36.pp toperator
pass toperator37.pp toperator
pass toperator38.pp toperator
pass toperator39.pp toperator
pass toperator40.pp toperator
pass toperator41.pp toperator
pass toperator42.pp toperator
pass toperator43.pp toperator
pass toperator44.pp toperator
pass toperator45.pp toperator
pass toperator46.pp toperator
pass toperator47.pp toperator
pass toperator48.pp toperator
pass toperator49.pp toperator
pass toperator50.pp toperator
pass toperator51.pp toperator
pass toperator52.pp toperator
pass toperator53.pp toperator
pass toperator54.pp toperator
pass toperator55.pp toperator
pass toperator56.pp toperator
pass toperator57.pp toperator
pass toperator58.pp toperator
pass toperator59.pp toperator
pass toperator60.pp toperator
pass toperator61.pp toperator
pass toperator62.pp toperator
pass toperator63.pp toperator
pass toperator64.pp toperator
pass toperator65.pp toperator
pass toperator66.pp toperator
pass toperator67.pp toperator
pass toperator68.pp toperator
pass toperator69.pp toperator
pass toperator7.pp toperator
pass toperator70.pp toperator
pass toperator71.pp toperator
pass toperator72.pp toperator
pass toperator73.pp toperator
pass toperator74.pp toperator
pass toperator75.pp toperator
pass toperator76.pp toperator
pass toperator77.pp toperator
pass toperator79.pp toperator
pass toperator8.pp toperator
pass toperator80.pp toperator
pass toperator81.pp toperator
pass toperator82.pp toperator
pass toperator83.pp toperator
pass toperator84.pp toperator
pass toperator85.pp toperator
pass toperator86.pp toperator
pass toperator87.pp toperator
pass toperator88.pp toperator
pass toperator90.pp toperator
pass toperator92.pp toperator
pass toperator93.pp toperator
pass toperator95.pp toperator
pass toperatorerror.pp toperator
pass tover2.pp tover
pass tprop.pp tprop
pass tprop2.pp tprop
pass trange2.pp trange
pass trange3.pp trange
pass trange4.pp trange
pass tsealed1.pp tsealed
pass tsealed2.pp tsealed
pass tsealed3.pp tsealed
pass tsealed4.pp tsealed
pass tsealed5.pp tsealed
pass tset1.pp tset
pass tset2.pp tset
pass tset3.pp tset
pass tset4.pp tset
pass tset5a.pp tset
pass tset7.pp tset
pass tstatic1.pp tstatic
pass tstatic3.pp tstatic
pass tstatic4.pp tstatic
pass tstatic5.pp tstatic
pass tstring7.pp tstring
pass tstring8.pp tstring
skip tarray11.pp tarray gap dynamic array of interfaces — refcount/lifetime on SetLength/copy (exit 30)
skip tarray12.pp tarray gap IInterface/TInterfacedObject base + specialize TArray<T> as result type
skip tarray13.pp tarray gap DynArraySize/DynArrayIndex/DynArraySetLength RTL helpers missing
skip tarray14.pp tarray gap Concat() on dynamic arrays and array-of-array constructors
skip tarray15.pp tarray gap dynamic-array typed constants/initializers (Nil, (), nested)
skip tarray16.pp tarray gap dynamic-array const initializers ([1,2,3]) and delphi-mode generic function CheckArray<T>
skip tarray17.pp tarray gap {$modeswitch arrayoperators} — dynarray + and += concatenation
skip tarray18.pp tarray gap `class operator :=` / Explicit on records taking open `array of LongInt`
skip tarray2.pp tarray gap array of const / TVarRec (vtype fields, VExtended^, VPointer)
skip tarray3.pp tarray gap typed-const array-of-char from string literal, openstring {$P+}, char-array/string compare
skip tarray6.pp tarray gap local var-section initializers (`var S: AnsiString = 'abcd'`) + wide/ansi conversions
skip tarray7.pp tarray gap open-array slice syntax a[lo..hi] passed to open-array param
skip tarrconstr1.pp tarrconstr gap Delphi dynamic-array constructor TAB.Create(...)
skip tarrconstr5.pp tarrconstr gap inline specialize TArray<specialize TArray<String>> in type decl
skip tarrconstr6.pp tarrconstr gap dynarray-type constructor TLongIntArray.Create + open-array overload pick
skip tarrconstr7.pp tarrconstr gap IInterface/TInterfacedObject; array constructor of interfaces refcount
skip tcase2.pp tcase gap subrange-of-enum type (workdays = mon..fri) and case over it
skip tclass11a.pp tclass gap nested class types inside a class (strict private / public `type` sections)
skip tclass12a.pp tclass gap Extended-precision Str formatting — value identical, pxx prints double-width 3.1400000000000001E+000 vs FPC's 20-digit extended (no 80-bit Extended print path)
skip tclass12b.pp tclass untriaged accepts-invalid: access control unenforced by project policy — see bug-pascal-member-visibility-unenforced
skip tclass12c.pp tclass gap class-local const/type/var sections, `type Integer` distinct type, property default
skip tclass12d.pp tclass gap nested class const/type sections (class-scoped const SomeValue)
skip tclass13.pp tclass wontfix needs FPC typinfo/RTTI (TypeInfo/GetEnumName) and FPC's nested-class ClassName strings
skip tclass13a.pp tclass gap nested `type` sections inside classes (nested class overriding parent's)
skip tclass13c.pp tclass gap accepts-invalid — TRootClass.Integer nested-type member; needs per-class nested-type registry — PARKED (user call 2026-07-11, near-zero value; note in bug-pascal-missing-diagnostics-fail-tests)
skip tclass13d.pp tclass gap `const` section inside a class (class constants / typed class consts)
skip tclass15.pp tclass gap nested class type + Classes TCustomMemoryStream/SetPointer
skip tclass16.pp tclass gap `class threadvar` in a class + threading RTL (RTLEvent, BeginThread)
skip tclass3.pp tclass gap bare `inherited;` forwarding the caller's arguments to the ancestor constructor
skip tclass5.pp tclass gap class constructor `fail` + range-check error 210 semantics
skip tclass9.pp tclass gap `class var` / `var` sections in class, class property with static method
skip tclassinfo1.pp tclass wontfix TObject.ClassInfo = TypeInfo(TObject) — FPC RTTI/typeinfo internals
skip tdefault1.pp tdefault wontfix needs FPC `variants` unit as shipped (Default() over Variant types)
skip tdefault5.pp tdefault gap Default() on record/object containing TextFile field (delphi mode)
skip tenum1.pp tenum gap subrange type over an enum (`weekend = sat..sun`) not parsed
skip tenum2.pp tenum wontfix dialect-pass — inc(enum) past range — PXX's lax enum-as-ordinal model, deterministic; not a bug, FPC-strict candidate
skip tenum3.pp tenum gap {$SCOPEDENUMS} + Enum.Element syntax and subrange-of-enum
skip tenum6.pp tenum gap `Str()` of boolean / ByteBool / WordBool / LongBool / QWordBool ('FALSE')
skip tenumerators1.pp tenum gap Classes TList/TFPList GetEnumerator + custom enumerator classes
skip terecs10.pp terecs gap default indexed property on a record (advanced records)
skip terecs11.pp terecs gap nested type section inside a record (private type: class/record/object/interface/range)
skip terecs14.pp terecs gap `class operator` set on records (Explicit, :=, =, In, comparison operators)
skip terecs15.pp terecs gap record constructors with overloads (advanced records)
skip terecs20.pp terecs gap `class threadvar` inside a record + threading RTL
skip terecs3.pp terecs gap advanced-record features from a unit — class var/const/nested type, static class methods
skip terecs6.pp terecs gap Delphi `class operator` names (Explicit/Implicit/Add/BitwiseOr/...)
skip terecs8.pp terecs gap `class var` in a record referencing its own type + class property
skip terecs_u1.pp terecs gap advanced records in units — nested type/const/var/class var sections, static class methods
skip texception1.pp texception gap `on <ExceptionClass> do` handler without a variable name (bare `On TAObject do`)
skip texception10.pp texception gap constructor call as a bare statement; AV in ctor caught as Exception (Classes unit)
skip texception3.pp texception gap RTL `ExitCode` variable missing; try/finally with exit/break/continue
skip tforin1.pp tforin gap for-in over subrange type / enum type / set (basic for-in forms)
skip tforin12.pp tforin gap initializing array-of-char elements from string literals in an array const
skip tforin13.pp tforin gap for-in over a set constructor with ranges (`for ch in ['a'..'c', ...]`)
skip tforin14.pp tforin gap for-in variant prints ADDRESSES not element values (silent wrong output, exit 0) — re-triaged 2026-07-15, needs its own minimal repro
skip tforin15.pp tforin gap `operator enumerator` (custom enumerator operator) not supported
skip tforin16.pp tforin gap for-in over a string constant
skip tforin17.pp tforin gap for-in over a string literal
skip tforin19.pp tforin gap for-in over an empty set constructor `[]`
skip tforin2.pp tforin gap for-in over a CALL-result string container (getstring(s)) + string op-enumerator
skip tforin24.pp tforin gap enumerator SELECTION by loop-var type (exit 0 with wrong output — keep skipped; re-confirmed 2026-07-15)
skip tforin25.pp tforin gap for-in form prints nothing where FPC prints four 0 lines (silent wrong output, exit 0) — re-triaged 2026-07-15
skip tforin26.pp tforin gap user function named `Write` (builtin name shadowing) + for-in over array of const/TVarRec
skip tforin27.pp tforin gap user function named `Write` (builtin name shadowing) + for-in over dynamic array
skip tforin28.pp tforin gap for-in over a set constructor literal [One, Three]
skip tforin3.pp tforin gap for-in over class GetEnumerator returning nil (segfault, want clean run)
skip tforin4.pp tforin gap for-in over function-returned and open/dynamic arrays with body mutation
skip tforin6.pp tforin gap `operator enumerator` for a class, returning an `object`-type enumerator
skip tforin7.pp tforin gap `enumerator MoveNext` / `enumerator Current` method+property directives
skip tforin8.pp tforin gap IEnumerable/IEnumerator interfaces driving for-in
skip tforin9.pp tforin gap `enumerator MoveNext/Current` directives + operator Enumerator
skip tgenconstraint1.pp tgenconstraint gap Delphi generic constraint syntax (class/record/constructor/interface constraints)
skip tgenconstraint37.pp tgenconstraint gap generic constraints on forward-declared class/interface (T: IInterface)
skip tgenconstraint38.pp tgenconstraint wontfix dialect-pass — PXX does not enforce generic constraints (compile-time safety net only; runtime semantics well-defined) — not a bug, FPC-strict candidate
skip tgenconstraint39.pp tgenconstraint wontfix dialect-pass — PXX does not enforce generic constraints (compile-time safety net only; runtime semantics well-defined) — not a bug, FPC-strict candidate
skip tgeneric1.pp tgeneric gap objfpc `generic TList<_T> = class` / `specialize` syntax not parsed
skip tgeneric10.pp tgeneric gap objfpc generic/specialize syntax + nested type (TCompareFunc) of a specialization
skip tgeneric102.pp tgeneric gap specialize of generic class declared in another unit (inline class funcs)
skip tgeneric103.pp tgeneric gap standalone `generic procedure Test<T>` + specialize; also unit-only compilation
skip tgeneric105.pp tgeneric gap %FAIL diagnostic — impl type params must match interface decl (TTest<S> vs <T>)
skip tgeneric106.pp tgeneric gap generic class with `class var` procvar field of type G<T>, method-of-object
skip tgeneric107.pp tgeneric gap inline specialize expression (specialize G<T>.Create as expression/procvar)
skip tgeneric11.pp tgeneric gap objfpc generic/specialize syntax; `specialize TList<_T>` as a param type
skip tgeneric14.pp tgeneric wontfix dialect-pass — test header says %fail is an FPC IMPLEMENTATION limitation ("assembler symbols not global"), not a language rule — PXX passing is correct
skip tgeneric15.pp tgeneric gap class inheriting from `specialize TStack<Integer>` as parent type
skip tgeneric16.pp tgeneric gap generic class inheriting from specialize of another generic
skip tgeneric20.pp tgeneric wontfix dialect-pass — generic method impl without <T> marker — PXX's generics surface deliberately accepts the stripped form (3d71edcf); not a bug
skip tgeneric21.pp tgeneric gap accepts-invalid — nested generic-in-generic declaration — semantics unverified, real gap (see bug-pascal-missing-diagnostics-fail-tests triage 2026-07-11)
skip tgeneric23.pp tgeneric wontfix requires FPC `fgl` unit as shipped (TFPGList)
skip tgeneric26.pp tgeneric gap accepts-invalid — type parameter in a variant part must be rejected (substitution model has no pre-specialization check)
skip tgeneric27.pp tgeneric gap enum-tagged variant part with INLINE enum type in a template's record element (`case enum:(one,two) of`)
skip tgeneric29.pp tgeneric gap generic interface IGenericInterface<T>, generic record, generic array
skip tgeneric3.pp tgeneric gap objfpc generic/specialize syntax with the generic declared in another unit
skip tgeneric30.pp tgeneric wontfix dialect-pass — mode-delphi generic method impl without <T> — PXX's Delphi-generics rewriter deliberately accepts the bare name (3d71edcf); not a bug
skip tgeneric48.pp tgeneric gap mixed generic overloads by arity (class/record/interface/procvar/array)
skip tgeneric5.pp tgeneric gap objfpc generic syntax + `typeinfo(_T)` intrinsic and typinfo unit
skip tgeneric50.pp tgeneric gap hint directives (deprecated/platform/experimental) on generics and specializations
skip tgeneric59.pp tgeneric gap same generic name with different arity (TTest<T> vs TTest<T,S>) in delphi mode
skip tgeneric6.pp tgeneric gap objfpc generic syntax + nested record/pointer types inside a generic class
skip tgeneric60.pp tgeneric gap nested non-generic record inside generic class, incl. out-of-line static method
skip tgeneric61.pp tgeneric gap nested class inside generic class + out-of-line TTest<T>.TTestSub.Test impl
skip tgeneric62.pp tgeneric gap nested `object` type inside generic class
skip tgeneric63.pp tgeneric gap generic record with nested record type
skip tgeneric64.pp tgeneric gap generic record with nested class type
skip tgeneric65.pp tgeneric gap generic record with nested `object` type
skip tgeneric66.pp tgeneric gap generic `object` type with nested record
skip tgeneric67.pp tgeneric gap generic `object` type with nested class
skip tgeneric68.pp tgeneric gap generic `object` type with nested `object`
skip tgeneric7.pp tgeneric gap generics across units + $R range-check state per unit (expects runtime error 201)
skip tgeneric76.pp tgeneric gap generic record with static class methods + specialized aliases (TPointEx<T>) unsupported
skip tgeneric77.pp tgeneric gap generic record templates (`generic TPointEx<T> = record`), non-class generics
skip tgeneric78.pp tgeneric gap generic class implementing specialized interface + method resolution clause
skip tgeneric79.pp tgeneric gap inline `class(specialize IGenericIntf<T>)` parent-list specialize (interface templates capture now)
skip tgeneric8.pp tgeneric gap objfpc generic syntax + inline methods over nested generic types
skip tgeneric83.pp tgeneric gap accepts-invalid — invalid generic record body accepted (pre-specialization checking)
skip tgeneric84.pp tgeneric gap accepts-invalid — invalid generic record body accepted (pre-specialization checking)
skip tgeneric85.pp tgeneric gap accepts-invalid — invalid generic record body accepted (pre-specialization checking)
skip tgeneric91.pp tgeneric gap Self in class procedure of a generic class specialized cross-unit
skip tgeneric92.pp tgeneric gap objfpc generic syntax + `with` over a generic type parameter record
skip tgeneric93.pp tgeneric gap {$if declared(TName<,>)} generic-arity form of declared()
skip tgeneric94.pp tgeneric gap generic FUNCTION bodies with nested type sections (SizeOf/local types inside generic routines)
skip tgeneric95.pp tgeneric gap specialize inside a generic routine signature (`expected name` at line 16)
skip tgeneric97.pp tgeneric wontfix expects FPC's internal specialized ClassName 'ttest<system.longint>'
skip tgeneric99.pp tgeneric gap unit-/class-qualified `specialize` syntax (ugeneric99.specialize TTest<...>)
skip tgenfunc1.pp tgenfunc gap generic (standalone) functions + inline specialize call expression
skip tgenfunc10.pp tgenfunc gap inline `specialize` expression inside generic function body
skip tgenfunc12.pp tgenfunc gap generic methods with class/interface constraints and generic global functions
skip tgenfunc15.pp tgenfunc gap generic array type templates + generic method overloads with array-of-T params
skip tgenfunc19.pp tgenfunc gap generic global function + class helper method resolution via specialize
skip tgenfunc2.pp tgenfunc gap generic (parameterized) standalone functions in mode delphi
skip tgenfunc23.pp tgenfunc gap generic procedure overload on T vs array of T + inline specialize call
skip tgenfunc3.pp tgenfunc gap generic class functions (generic class function Add<T>) not supported
skip tgenfunc4.pp tgenfunc gap delphi-mode generic class function with inline type args
skip tgenfunc5.pp tgenfunc gap generic instance methods (objfpc generic function ... <T>)
skip tgenfunc6.pp tgenfunc gap delphi-mode generic instance method Add<T>
skip tgenfunc7.pp tgenfunc gap generic functions/methods imported from another unit and specialized
skip tgenfunc8.pp tgenfunc gap generic FUNCTION with <T> in result/args (scalar operators land; parse dies at the generic func decl)
skip tgenfunc9.pp tgenfunc gap generic methods with private/protected visibility specialized from caller
skip tinterface4.pp tinterface wontfix needs FPC's `variants` unit and FPC's IInterface/NewInstance refcount internals
skip tinterface6.pp tinterface gap interface GUID/CORBA-UID usable as a typed constant (tguid/shortstring init)
skip tmoperator1.pp tmoperator gap management operators Initialize/Finalize (advancedrecords)
skip tmoperator10.pp tmoperator wontfix probes TypInfo GetTypeData ElType/ElType2 RTTI layout of dyn array
skip tmoperator11.pp tmoperator gap management operator class operator Initialize on records
skip tmoperator2.pp tmoperator gap record Initialize/Finalize management operators with managed fields
skip tmoperator3.pp tmoperator gap record management operators Initialize/Finalize lifecycle
skip tmoperator4.pp tmoperator gap management operators across multiple record types
skip tmoperator5.pp tmoperator gap management operators Initialize/Finalize invocation order
skip tmoperator7.pp tmoperator gap management operators inside object/dynarray of records + class var
skip tmoperator8.pp tmoperator gap management operators AddRef/Copy/Initialize/Finalize on records
skip tmoperator9.pp tmoperator gap record management operators Initialize/Finalize called for locals
skip tobject1.pp tobject gap object constructor `fail`, erroru/ExitCode RTL support
skip tobject2.pp tobject gap old-style `object` types with virtual methods, constructor/destructor
skip tobject4.pp tobject gap direct destructor call as a statement (`o1.destroy;`) not parsed
skip tobject5.pp tobject gap TObject.Equals/GetHashCode/UnitName/ToString RTL methods
skip tobject6.pp tobject gap `object` type with nested type/class var/const sections and class property
skip tobject7.pp tobject gap `object` with private nested type, typed const and static class property
skip toperator1.pp toperator gap operator overloading (+) on records declared in units; cross-unit operator resolution
skip toperator2.pp toperator gap unit-level `operator +` overload on records (global operator overloading)
skip toperator3.pp toperator gap unit-level `operator +` overload on records, mutually-used units
skip toperator4.pp toperator gap unit-level `operator +` overload on records with real fields
skip toperator6.pp toperator gap `operator :=` implicit-conversion overload + qword/int64 overload selection
skip toperator78.pp toperator gap global operator overloads on primitive/set types (**, ><, div, mod, and)
skip toperator89.pp toperator gap overloading implicit assignment operator `:=` (global operator)
skip toperator9.pp toperator gap operator overload for `in` on a record type not supported by the parser
skip toperator91.pp toperator gap class operators Explicit/Implicit overloaded on ShortString[N] result types
skip toperator94.pp toperator gap objfpc `class operator :=` implicit conversion to shortstring types — the duplicate-conversion check (parser.inc ~1860) falsely collides distinct frozen-string result kinds; root is the same String[N] tk inconsistency (tyString vs tyFixedString vs tyShortString) that toperator93 exposed at the use site
skip tover1.pp tover gap overload resolution across shortstring/ansistring/widestring/pchar params
skip tover3.pp tover wontfix dialect-pass — overload ambiguity — PXX deterministically ranks (picks longint for cardinal arg) by design; FPC-parity ambiguity errors belong to --strict-overload
skip tover4.pp tover gap 80-bit extended/cextended float type and overload resolution across single/double/extended
skip tprocvar1.pp tprocvar gap method pointers (`procedure(l:longint) of object`), @Class.Method, typed-const procvars
skip tprocvar2.pp tprocvar gap typed const procvar initialized with bare proc name (TP mode), procvar via move()
skip tprocvar3.pp tprocvar gap delphi-mode procvar of object, @-less proc assignment, codepointer method addresses
skip tprop1.pp tprop gap global `property` section in a program (FPC-mode global properties)
skip tpropdef.pp tprop wontfix depends on FPC Classes/TComponent published-property RTTI streaming (stored/nodefault)
skip trange5.pp trange gap `with` over a record typecast (int64rec(q)) plus 64-bit {$R+} range checks
skip tsealed6.pp tsealed gap `object abstract` / `object sealed` modifiers in object declarations
skip tset2a.pp tset gap explicit enum ordinal values (dA:=8) + {$packset 1} packed-set semantics
skip tset2b.pp tset gap explicit enum ordinal values (dA:=8) + {$packset 2} packed-set semantics
skip tset2c.pp tset gap explicit enum ordinal values (dA:=17) + {$packset 1} packed-set semantics
skip tset2d.pp tset gap explicit enum ordinal values (dA:=17) + {$packset 2} packed-set semantics
skip tsetsize.pp tset wontfix asserts FPC's exact set-size/packing layout (SizeOf(set of subrange))
skip tstatic2.pp tstatic gap class var with static class property and inherited access
skip tstring1.pp tstring gap shortstring Insert/Delete/Copy with out-of-range/negative indices crashes
skip tstring10.pp tstring gap punicodechar/pwidechar value casts + unicodestring/widestring conversions (Flush/Output landed)
skip tstring11.pp tstring gap overload resolution RawByteString vs UnicodeString (char/array/pchar args)
skip tstring2.pp tstring gap RTL `ExitCode` variable missing (needed by erroru unit); char-array to shortstring assign
skip tstring3.pp tstring gap typed-const array of short/ansistring initialized from char & resourcestring consts
skip tstring4.pp tstring wontfix reads ansistring refcount/length header words — FPC internal string layout
skip tstring5.pp tstring gap RTL `ExitCode` variable missing (needed by testsuite erroru unit); ansistring compares
skip tstring9.pp tstring gap pchar / array-of-char assignment to string and widestring conversions