Prohibit binding replacement in closed modules during precompile#57425
Merged
Prohibit binding replacement in closed modules during precompile#57425
Conversation
This applies the existing prohibition against introducing new bindings in a closed module to binding replacement as well (for the same reason - the change won't be persisted after reload). It is pretty hard to even reach this point, since `eval` into closed modules is already prohibited and there's no surface syntax for cross-module declaration, but it is technically reachable from lowered IR. Further, in the future we may make all of these builtins, which would make it easier. Thus, be consistent now and fully disallow binding replacement in closed modules during precompile.
KristofferC
pushed a commit
that referenced
this pull request
Feb 17, 2025
) This applies the existing prohibition against introducing new bindings in a closed module to binding replacement as well (for the same reason - the change won't be persisted after reload). It is pretty hard to even reach this point, since `eval` into closed modules is already prohibited and there's no surface syntax for cross-module declaration, but it is technically reachable from lowered IR. Further, in the future we may make all of these builtins, which would make it easier. Thus, be consistent now and fully disallow binding replacement in closed modules during precompile. (cherry picked from commit 56aed62)
KristofferC
added a commit
that referenced
this pull request
Feb 26, 2025
Backported PRs: - [x] #57302 <!-- Add explicit imports for types and fix bugs --> - [x] #57420 <!-- Compiler: Fix check for IRShow definedness --> - [x] #57419 <!-- generated: Switch resolution module back to what it was before --> - [x] #57421 <!-- bpart: Skip implicit import reval if using'd export set is unchanged --> - [x] #57425 <!-- Prohibit binding replacement in closed modules during precompile --> - [x] #57426 <!-- Prohibit `import`ing or `using` Main during incremental compilation --> - [x] #57433 <!-- bpart: Track whether any binding replacement has happened in image modules --> - [x] #57445 <!-- Run all `--sysimage-native-code=no` cmdlineargs tests single-threaded --> - [x] #57386 <!-- Only strip invariant.load from special pointers --> - [x] #57453 <!-- Revert "Make emitted egal code more loopy (#54121)" --> - [x] #57389 <!-- Change memory indexing to use the type as index instead of i8 --> - [x] #57447 <!-- Don't return null pointer when asking for the type of a declared global --> - [x] #57467 <!-- using/import: ensure world update after each observable operation --> - [x] #57471 <!-- staticdata: Don't use `newm` pointer after it has been invalidated --> - [x] #57416 <!-- lowering: Don't mutate lambda in `linearize` -->
Merged
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This applies the existing prohibition against introducing new bindings in a closed module to binding replacement as well (for the same reason - the change won't be persisted after reload). It is pretty hard to even reach this point, since
evalinto closed modules is already prohibited and there's no surface syntax for cross-module declaration, but it is technically reachable from lowered IR. Further, in the future we may make all of these builtins, which would make it easier. Thus, be consistent now and fully disallow binding replacement in closed modules during precompile.