diff --git a/vyper/ast/pre_parser.py b/vyper/ast/pre_parser.py index bd47729828..645c857a2f 100644 --- a/vyper/ast/pre_parser.py +++ b/vyper/ast/pre_parser.py @@ -15,14 +15,14 @@ from vyper.typing import ModificationOffsets, ParserPosition -def validate_version_pragma(version_str: str, code: str, start: ParserPosition) -> None: +def validate_version_pragma(version_str: str, full_source_code: str, start: ParserPosition) -> None: """ Validates a version pragma directive against the current compiler version. """ from vyper import __version__ if len(version_str) == 0: - raise VersionException("Version specification cannot be empty", code, *start) + raise VersionException("Version specification cannot be empty", full_source_code, *start) # X.Y.Z or vX.Y.Z => ==X.Y.Z, ==vX.Y.Z if re.match("[v0-9]", version_str): @@ -34,14 +34,16 @@ def validate_version_pragma(version_str: str, code: str, start: ParserPosition) spec = SpecifierSet(version_str) except InvalidSpecifier: raise VersionException( - f'Version specification "{version_str}" is not a valid PEP440 specifier', code, *start + f'Version specification "{version_str}" is not a valid PEP440 specifier', + full_source_code, + *start, ) if not spec.contains(__version__, prereleases=True): raise VersionException( f'Version specification "{version_str}" is not compatible ' f'with compiler version "{__version__}"', - code, + full_source_code, *start, ) @@ -177,7 +179,7 @@ def pre_parse(code: str) -> tuple[Settings, ModificationOffsets, dict, str]: if settings.compiler_version is not None: raise StructureException("compiler version specified twice!", start) compiler_version = contents.removeprefix("@version ").strip() - validate_version_pragma(compiler_version, line, start) + validate_version_pragma(compiler_version, code, start) settings.compiler_version = compiler_version if contents.startswith("pragma "): @@ -186,7 +188,7 @@ def pre_parse(code: str) -> tuple[Settings, ModificationOffsets, dict, str]: if settings.compiler_version is not None: raise StructureException("pragma version specified twice!", start) compiler_version = pragma.removeprefix("version ").strip() - validate_version_pragma(compiler_version, line, start) + validate_version_pragma(compiler_version, code, start) settings.compiler_version = compiler_version elif pragma.startswith("optimize "):