Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: SchoolyB/EZ
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.1.1
Choose a base ref
...
head repository: SchoolyB/EZ
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.1.2
Choose a head ref
  • 9 commits
  • 9 files changed
  • 3 contributors

Commits on May 1, 2026

  1. fix(typechecker): handle multi-return and arg validation for module c…

    …alls
    
    - User-defined module functions with multiple return values now correctly
      propagate ret_types to the temp symbol, fixing multi-var destructuring
      like `mut a, b = mod.func()` which previously gave E3006 false positive
    - E3040 check now catches single-var assignment of multi-return module
      calls, preventing C type errors from leaking through
    - Added stdlib argument count validation table covering all stdlib modules,
      so missing/extra args to functions like io.read_file() are caught by the
      typechecker instead of leaking C compiler errors
    SchoolyB committed May 1, 2026
    Configuration menu
    Copy the full SHA
    5669924 View commit details
    Browse the repository at this point in the history
  2. docs: clarify path resolution semantics for stdlib file functions

    All relative paths in io, csv, and sqlite functions resolve from the
    process working directory, not from source file locations.
    SchoolyB committed May 1, 2026
    Configuration menu
    Copy the full SHA
    09d7fae View commit details
    Browse the repository at this point in the history

Commits on May 2, 2026

  1. fix(typechecker): validate argument types for stdlib function calls

    Added a table-driven first-argument type checker covering strings, io,
    maps, crypto, encoding, regex, json, csv, bytes, and sqlite modules.
    Passing the wrong type (e.g. int to strings.to_upper, string to
    maps.has_key) now emits E3001 at compile time instead of leaking C
    compiler errors. Also added a general first-arg-must-be-array check
    for all arrays.* functions.
    SchoolyB committed May 2, 2026
    Configuration menu
    Copy the full SHA
    6f34119 View commit details
    Browse the repository at this point in the history
  2. fix(typechecker): handle range exprs in import rewriting and in/!in t…

    …ype checks
    
    Add NODE_RANGE_EXPR to rewrite_labels() so file-scope constants
    referenced inside range() expressions get properly rewritten during
    multi-file import merging. Also extend E3085 validation to catch
    type mismatches when using in/!in with range() (e.g. string !in
    range(1, 50)).
    SchoolyB committed May 2, 2026
    Configuration menu
    Copy the full SHA
    6d2f8c1 View commit details
    Browse the repository at this point in the history
  3. fix: wire arrays.remove() function

    Add arrays.remove(arr, value) which removes the first occurrence of
    a value from an array. Supports int, float, and string element types.
    Wired through all four layers: C implementation, header, typechecker,
    and codegen.
    SchoolyB committed May 2, 2026
    Configuration menu
    Copy the full SHA
    bfc8f03 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    afb8e8c View commit details
    Browse the repository at this point in the history
  5. fix(parser,typechecker): parse complex multi-return types and hide in…

    …ternal name prefixes
    
    Two fixes:
    
    1. Multi-return type parser used read_type_name() for unnamed return
    slots, which only handles simple identifiers. Array types like [string]
    were tokenized as separate return types, and map[K:V] was misread as
    a named return. Switch to parse_complex_type() and add map/func to
    the is_type disambiguation.
    
    2. Import merging prefixes declaration names (e.g. foo -> mod_foo) but
    these internal names leaked into every error message. Add original_name
    fields to all declaration AST structs, preserve them during merging,
    and use display-name macros in all 28+ error/warning locations so
    users always see the names they wrote.
    SchoolyB committed May 2, 2026
    Configuration menu
    Copy the full SHA
    88c5c3b View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    3df838a View commit details
    Browse the repository at this point in the history
  7. chore(main): release 3.1.2 (#1605)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored May 2, 2026
    Configuration menu
    Copy the full SHA
    e9c70d9 View commit details
    Browse the repository at this point in the history
Loading