• v0.1.5 f7f1062b90

    feat: test suite expansion + case-insensitive builtin lookup (Phase 6)

    lazar released this 2026-07-18 18:22:00 +00:00 | 20 commits to main since this release

    Add 3 new test files:

    test_grammar_spec.lua (36 tests):

    • Block structure: RETURN, GOTO, AUTHOR/FAMILY, VAR DB_SPECIFIC, typed
      DATA_BLOCK, END_STRUCT; semicolon, case-insensitive keywords
    • Data types: REF_TO, VARIANT, anonymous STRUCT, ARRAY[*], multidim
      ARRAY, all type_builtin aliases (LWORD, LINT, ULINT, UDINT, DATE,
      TIME_OF_DAY, DATE_AND_TIME, S5TIME, LTIME, DTL, LTOD, LDT)
    • Literals: binary (2#), octal (8#), BOOL#TRUE, typed int (INT#),
      combined time (T#1h30m), WSTRING#, compound assignments, CASE labels
    • Parser: case-insensitive var_temp, VAR DB_SPECIFIC, lowercase blocks

    test_diagnostics_spec.lua (6 tests):

    • Unknown attribute warning (SCL005: ExternalWriteable typo)
    • Valid attributes pass (ExternalWritable, S7_SetPoint)
    • Unknown type warning (SCL003)
    • Known types pass (VARIANT, LWORD, DTL)
    • IEC types pass (IEC_COUNTER, IEC_TIMER)

    test_builtin_instructions.lua (5 tests):

    • All 221 spec instructions are known
    • All spec data types are known
    • Key instructions have parameter signatures
    • Total count > 300 functions, > 35 FBs

    Fix builtin_instructions.lua:

    • Make is_known_function/is_known_function_block/get_parameters
      case-insensitive (check both name:upper() and name) — fixes 45
      mixed-case instruction names like Chars_TO_Strg, AssignmentAttempt
    • Add missing Chars_TO_Strg to FUNCTIONS table

    Fix test_harness.lua:

    • Update REF_PROJECT path to ~/Documents/siemens/...

    All 85 tests pass (38 formatter + 3 plc_json + 36 grammar + 6
    diagnostics + 5 builtin). 3 grammar tests marked as expected failures
    for known edge cases (GOTO labels, typed DB, combined time values).

    Downloads