aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
AgeCommit message (Collapse)Author
2023-04-20Module: mark function body dependencies, don't re-analyze anonymous declsmlugg
2023-04-03link: cleanup lazy symbolsJacob Young
We now only update one lazy symbol in flushModule. Updating the rest from updateDecl is TBD.
2023-03-26Module: fix lazy srcloc resolution for new for loop syntaxVeikka Tuominen
Closes #15081
2023-03-21Improve error messages for break type coercionJohn Schmidt
2023-03-17main: add debug option to dump unoptimized llvm irJacob Young
2023-03-15Module: handle incremental update from ZIR with AST errorsAndrew Kelley
2023-03-15progress towards semantic error serializationAndrew Kelley
Introduces std.zig.ErrorBundle which is a trivially serializeable set of compilation errors. This is in the standard library so that both the compiler and the build runner can use it. The idea is they will use it to communicate compilation errors over a binary protocol. The binary encoding of ErrorBundle is a bit problematic - I got a little too aggressive with compaction. I need to change it in a follow-up commit to use some indirection in the error message list, otherwise iteration is too unergonomic. In fact it's so problematic right now that the logic getAllErrorsAlloc() actually fails to produce a viable ErrorBundle because it puts SourceLocation data in between the root level ErrorMessage data. This commit has a simplification - redundant logic for rendering AST errors to stderr has been removed in favor of moving the logic for lowering AST errors into AstGen. So even if we get parse errors, the errors will get lowered into ZIR before being reported. I believe this will be useful when working on --autofix. Either way, some redundant brittle logic was happily deleted. In Compilation, updateSubCompilation() is improved to properly perform error reporting when a sub-compilation object fails. It no longer dumps directly to stderr; instead it populates an ErrorBundle object, which gets added to the parent one during getAllErrorsAlloc(). In package fetching code, instead of dumping directly to stderr, it now populates an ErrorBundle object, and gets properly reported at the CLI layer of abstraction.
2023-03-11Module: retry ZIR cache file creationAndrius Bentkus
There are no dir components, so you would think that this was unreachable, however we have observed on macOS two processes racing to do openat() with O_CREAT manifest in ENOENT. closes #12138
2023-03-08Module: rewrite zir caching logicJacob Young
Multiple processes can sit waiting for the exclusive lock at the same time, so we want to recheck whether it needs to be updated whenever we get an exclusive lock. This also fixes a race condition between one process truncating the cache file and another process reading it without atomic locking.
2023-03-05stage2: add zig_backend to ZIR cache namespaceAndrew Kelley
2023-02-21Improve multi-module error messagesmlugg
- Fix assertion failure if AstGen failed on a multi-module file - Cap number of per-error reference notes and total multi-module errors each at 5 - Always put "root of package" reference notes first Resolves: #14499
2023-02-21Implement new module CLImlugg
2023-02-18improve error message for byref capture of byval arrayAndrew Kelley
2023-02-18Sema: improve error message for mismatched for loop lengthsAndrew Kelley
2023-02-18update std lib and compiler sources to new for loop syntaxAndrew Kelley
2023-02-13move the cache system from compiler to std libAndrew Kelley
2023-02-05make `@embedFile` support module-mapped names the same way as `@import`Andrew Kelley
closes #14553
2023-02-03link: remove `FnData` and make it self-ownedLuuk de Gram
This finishes the work started in #14502 where atoms are owned by the linker themselves. This now makes debug atoms fully owned by dwarf, and no information is left stored on the decl.
2023-02-03introduce ZON: Zig Object NotationAndrew Kelley
* std.zig.parse is moved to std.zig.Ast.parse * the new function has an additional parameter that requires passing Mode.zig or Mode.zon * moved parser.zig code to Parse.zig * added parseZon function next to parseRoot function
2023-02-01link: remove union types which are now internal to backendsJakub Konka
2023-02-01link: make Wasm atoms fully owned by the linkerLuuk de Gram
2023-02-01link: make SpirV atoms fully owned by the linkerJakub Konka
2023-02-01link: decouple DI atoms from linker atoms, and manage them in Dwarf linkerJakub Konka
2023-02-01link: make Plan9 atoms fully owned by the linkerJakub Konka
2023-01-31link: make Coff atoms fully owned by the linkerJakub Konka
2023-01-31link: make Elf atoms fully owned by the linkerJakub Konka
2023-01-31link: make MachO atoms fully owned by the linkerJakub Konka
2023-01-27self-hosted: remove allocateDeclIndexes from the public link.File APIJakub Konka
2023-01-27wasm: migrate to new non-allocateDeclIndexes APILuuk de Gram
2023-01-26coff: migrate to new non-allocateDeclIndexes APIJakub Konka
2023-01-26elf: migrate to new non-allocateDeclIndexes APIJakub Konka
2023-01-26macho: completely remove allocateDeclIndexes in favor of linker trackingJakub Konka
2023-01-22AstGen: detect and error on files included in multiple packagesmlugg
Previously, if a source file was referenced from multiple packages, it just became owned by the first one AstGen happened to reach; this was a problem, because it could lead to inconsistent behaviour in the compiler based on a race condition. This could be fixed by just analyzing such files multiple times - however, it was pointed out by Andrew that it might make more sense to enforce files being part of at most a single package. Having a file in multiple packages would not only impact compile times (due to Sema having to run multiple times on potentially a lot of code) but is also a confusing anti-pattern which more often than not is a mistake on the part of the user. Resolves: #13662
2023-01-22Package: store package name directlymlugg
By @Vexu's suggestion, since fetching the name from the parent package is error-prone and complex, and optimising Package for size isn't really a priority.
2023-01-16Sema: automatically optimize order of struct fieldsVeikka Tuominen
This is a simple starting version of the optimization described in #168 where the fields are just sorted by order of descending alignment.
2023-01-11Sema: fix typeInfo decls with usingnamespaceVeikka Tuominen
Closes #12403
2023-01-09std: add helper functions to std.zig.Ast for extracting data out of nodesTechatrix
2023-01-05Sema: handle enum expressions referencing local variablesVeikka Tuominen
Closes #12272
2023-01-05Sema: remove generic function from `monomorphed_funcs` on any errorVeikka Tuominen
2023-01-05Sema: add system for checking backend feature supportVeikka Tuominen
2023-01-03Sema: do not immediately destroy failed generic instantiationVeikka Tuominen
Closes #12535 Closes #12765 Closes #12927
2022-12-30fix generic function arg debug info referencing wrong parameterVeikka Tuominen
Closes #14123
2022-12-14stage2: remove `pub` from a private functionAndrew Kelley
2022-12-14std.fs.Dir.statFile reworkAndrew Kelley
* revert changes to Module because the error set is consistent across operating systems. * remove duplicated Stat.fromSystem code and use a less redundant name. * make fs.Dir.statFile follow symlinks, and avoid pointless control flow through the posix layer.
2022-12-14std.fs.Dir.statFile: use fstatatPhilippe Pittoli
This avoids extra syscalls.
2022-12-14Sema: display cimport errors from clangVeikka Tuominen
2022-12-11Add a helpful note when using `**` on number types. (#13871)IntegratedQuantum
2022-12-06remove most conditional compilation based on stage1Andrew Kelley
There are still a few occurrences of "stage1" in the standard library and self-hosted compiler source, however, these instances need a bit more careful inspection to ensure no breakage.
2022-12-02Sema: add error for failed assumption about struct having runtime bitsVeikka Tuominen
2022-11-29std.mem.Allocator: allow shrink to failAndrew Kelley
closes #13535