fixes #20811; Nested proc with inner being generic cannot access parameters of outer proc#25837
Conversation
…meters of outer proc
Contributor
There was a problem hiding this comment.
Pull request overview
This PR aims to fix Nim issue #20811 where a nested generic proc cannot access parameters from its enclosing proc, by adjusting the generic pre-pass symbol handling and adding regression tests.
Changes:
- Updates
semGenericStmtSymbolincompiler/semgnrc.nimto try to preserve captured outer parameters during the generic pre-pass. - Adds
tests/generics/t20811.nimto ensure both generic and non-generic inner procs can access an outer parameter. - Extends
tests/template/topensym.nimwith an #20811 regression block covering template-injected symbol visibility in a nested generic proc.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| compiler/semgnrc.nim | Modifies generic pre-pass symbol handling for parameters to address captured-parameter visibility. |
| tests/generics/t20811.nim | New regression test covering nested generic + plain inner proc access to an outer parameter. |
| tests/template/topensym.nim | Adds a regression block to cover template-injected symbol capture/visibility with nested generics. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
fixes #20811
This pull request addresses issues with parameter capture in nested generic procedures and templates, ensuring that outer parameters are correctly visible and accessible within nested scopes. The main changes include a fix in the semantic analysis logic and the addition of targeted regression tests.
Semantic analysis improvements:
semGenericStmtSymbolincompiler/semgnrc.nimto ensure that parameters from outer scopes are preserved and accessible in nested generic procedures, fixing visibility issues with captured parameters.Added regression tests:
tests/generics/t20811.nimto verify that both generic and plain inner procedures can access parameters from their enclosing procedure.tests/template/topensym.nimwith a new block for issue Nestedprocwith inner being generic cannot access parameters of outerproc#20811 to test that template-injected parameters are correctly captured and visible in nested generic procedures.