The DECLARE_BUFFER macro in src/wren_utils.h had an extraneous semicolon at the end of the wren##name##BufferWrite function declaration. This caused a double-semicolon issue when the macro was expanded in source files, as the macro invocation sites already added their own semicolons. Removing the trailing semicolon from the macro template ensures consistent and correct C syntax across all buffer type declarations.
The commit adds missing semicolons to three DEFINE_BUFFER calls in wren_utils.c and wren_value.c, and also adds a semicolon to the DECLARE_BUFFER macro definition in wren_utils.h to ensure proper syntax termination. Additionally, it removes trailing whitespace on two blank lines in wren_value.c.
Previously, when `super` was used at the top level or outside any method, the compiler would error but still attempt to read `enclosingClass->methodLength` and `enclosingClass->methodName` from a NULL pointer, leading to undefined behavior. This restructures the error handling in `super_()` to always call `loadThis()` and guard the unnamed super call path with a NULL check on `enclosingClass`, setting an empty method signature when no enclosing class exists. Two additional test cases for `super.foo("bar")` and `super("foo")` are added to verify the compiler continues past the error without crashing.
Add a `contains(element)` method to the `List` class in the core library,
enabling linear search for an element across all list items. Update the
`example/set.wren` file to use the new Wren operator syntax for `|`, `+`,
`&`, and `-` methods, replacing old function-style parameter definitions
with block-style closures. Also fix trailing whitespace throughout the
Set example and embed the new `contains` method into the C source string
in `src/wren_core.c` for the built-in List class.
When `super` is called at top-level with no arguments, `enclosingClass` is null, causing a segfault when trying to access its method name. This fix wraps the unnamed super call logic inside an else branch that only executes when `enclosingClass` is non-null, and adds a test case for the unnamed `super` call at top-level.
Remove the explicit `https:` scheme from the Google Fonts stylesheet href in
`doc/site/template.html` to avoid mixed content warnings when the site is served
over HTTP and to allow the browser to automatically use the same protocol as the
page.
Wrap the subprocess.check_output call in a try-except block for OSError. When the interpreter binary is not found, print a user-friendly message and return None from run_trial rather than letting the exception propagate and halt the benchmark run.
Add four new counters (num_benchmark_files, num_benchmark_todos, num_benchmark_empty, num_benchmark) and a walk over the benchmark directory to count .wren files, empty/non-empty lines, and TODO patterns. Print the new benchmark section after the existing test output.
Update print statements to function syntax, add from __future__ import print_function in test.py, change shebangs to /usr/bin/env python, replace str.translate with re.sub for anchor sanitization in generate_docs.py, and decode subprocess output to utf-8 in test.py for cross-version string handling.