Exception when assigning YUL variable to library
- Dominant language
- Python
- Stars
- 6.4k
- Forks
- 1.1k
- PR merge metrics
- No merged PRs in 30d
Description
The following contract causes an exception:
```
library Library { }
contract Contract {
function f() public pure {
assembly {
let x := Library
}
}
}
```
Output:
```
Traceback (most recent call last):
File "c:\users\x\documents\github\slither\slither\__main__.py", line 610, in main_impl
(slither_instances, results_detectors, results_printers, number_contracts) = process_all(filename, args,
File "c:\users\x\documents\github\slither\slither\__main__.py", line 67, in process_all
(slither, current_results_detectors, current_results_printers, current_analyzed_count) = process_single(
File "c:\users\x\documents\github\slither\slither\__main__.py", line 53, in process_single
slither = Slither(target,
File "c:\users\x\documents\github\slither\slither\slither.py", line 86, in __init__
self._parser.analyze_contracts()
File "c:\users\x\documents\github\slither\slither\solc_parsing\slitherSolc.py", line 341, in analyze_contracts
self._analyze_third_part(contracts_to_be_analyzed, libraries)
File "c:\users\x\documents\github\slither\slither\solc_parsing\slitherSolc.py", line 438, in _analyze_third_part
self._analyze_variables_modifiers_functions(contract)
File "c:\users\x\documents\github\slither\slither\solc_parsing\slitherSolc.py", line 478, in _analyze_variables_modifiers_functions
contract.analyze_content_functions()
File "c:\users\x\documents\github\slither\slither\solc_parsing\declarations\contract.py", line 356, in analyze_content_functions
function_parser.analyze_content()
File "c:\users\x\documents\github\slither\slither\solc_parsing\declarations\function.py", line 303, in analyze_content
node_parser.analyze_expressions()
File "c:\users\x\documents\github\slither\slither\solc_parsing\yul\parse_yul.py", line 254, in analyze_expressions
node.analyze_expressions()
File "c:\users\x\documents\github\slither\slither\solc_parsing\yul\parse_yul.py", line 42, in analyze_expressions
expression = parse_yul(self._scope, self, self._unparsed_expression)
File "c:\users\x\documents\github\slither\slither\solc_parsing\yul\parse_yul.py", line 667, in parse_yul
op = parsers.get(ast['nodeType'], parse_yul_unsupported)(root, node, ast)
File "c:\users\x\documents\github\slither\slither\solc_parsing\yul\parse_yul.py", line 566, in parse_yul_variable_declaration
return _parse_yul_assignment_common(root, node, ast, 'variables')
File "c:\users\x\documents\github\slither\slither\solc_parsing\yul\parse_yul.py", line 552, in _parse_yul_assignment_common
rhs = parse_yul(root, node, ast['value'])
File "c:\users\x\documents\github\slither\slither\solc_parsing\yul\parse_yul.py", line 667, in parse_yul
op = parsers.get(ast['nodeType'], parse_yul_unsupported)(root, node, ast)
File "c:\users\x\documents\github\slither\slither\solc_parsing\yul\parse_yul.py", line 641, in parse_yul_identifier
raise SlitherException(f"unresolved reference to identifier {name}")
slither.exceptions.SlitherException: unresolved reference to identifier Library
```
Contributor guide
Assessment
This issue has not been assessed yet.