fix: resolve struct/enum types from imported scopes during parsing#2972
Open
ep0chzer0 wants to merge 1 commit intocrytic:masterfrom
Open
fix: resolve struct/enum types from imported scopes during parsing#2972ep0chzer0 wants to merge 1 commit intocrytic:masterfrom
ep0chzer0 wants to merge 1 commit intocrytic:masterfrom
Conversation
When parsing types in ContractSolc/FunctionSolc and top-level contexts,
_find_from_type_name only searched structures and enums from the current
file scope's contracts. This caused a ParsingError ("Type not found")
when a contract referenced a struct defined in an imported library
(e.g., `Structs.ShiftChanges`).
Extended the type search to also include structures, enums, and
contracts from `scope.accessible_scopes`, which contains the file
scopes of all imported files.
Fixes crytic#2954
3e56d21 to
f83ac2b
Compare
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.
Summary
ParsingError: Type not found struct Structs.ShiftChangeswhen a contract uses struct types from an imported libraryparse_type()builtall_structures/all_enumsonly fromscope.contracts.values()(current file), missing types fromscope.accessible_scopes(imported files)ContractSolc/FunctionSolcpath to also include structures, enums, and contracts from accessible (imported) scopesTest plan
test_imported_struct_from_librarywith a library defining structs imported by a consumer contract