Remove leftover attributes from parser (#39574)
#35042 introduced lazy hash parsing, but didn't remove a few attributes from the parser that were needed only for concrete specs This commit removes them, since they are effectively dead code.
This commit is contained in:
parent
ca1e4d54b5
commit
fdea5e7624
2 changed files with 1 additions and 27 deletions
|
@ -288,9 +288,6 @@ def next_spec(
|
||||||
)
|
)
|
||||||
raise SpecParsingError(msg, self.ctx.current_token, self.literal_str)
|
raise SpecParsingError(msg, self.ctx.current_token, self.literal_str)
|
||||||
|
|
||||||
if root_spec.concrete:
|
|
||||||
raise spack.spec.RedundantSpecError(root_spec, "^" + str(dependency))
|
|
||||||
|
|
||||||
root_spec._add_dependency(dependency, deptypes=(), virtuals=())
|
root_spec._add_dependency(dependency, deptypes=(), virtuals=())
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -306,13 +303,12 @@ def all_specs(self) -> List[spack.spec.Spec]:
|
||||||
class SpecNodeParser:
|
class SpecNodeParser:
|
||||||
"""Parse a single spec node from a stream of tokens"""
|
"""Parse a single spec node from a stream of tokens"""
|
||||||
|
|
||||||
__slots__ = "ctx", "has_compiler", "has_version", "has_hash"
|
__slots__ = "ctx", "has_compiler", "has_version"
|
||||||
|
|
||||||
def __init__(self, ctx):
|
def __init__(self, ctx):
|
||||||
self.ctx = ctx
|
self.ctx = ctx
|
||||||
self.has_compiler = False
|
self.has_compiler = False
|
||||||
self.has_version = False
|
self.has_version = False
|
||||||
self.has_hash = False
|
|
||||||
|
|
||||||
def parse(self, initial_spec: Optional[spack.spec.Spec] = None) -> Optional[spack.spec.Spec]:
|
def parse(self, initial_spec: Optional[spack.spec.Spec] = None) -> Optional[spack.spec.Spec]:
|
||||||
"""Parse a single spec node from a stream of tokens
|
"""Parse a single spec node from a stream of tokens
|
||||||
|
@ -343,7 +339,6 @@ def parse(self, initial_spec: Optional[spack.spec.Spec] = None) -> Optional[spac
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
if self.ctx.accept(TokenType.COMPILER):
|
if self.ctx.accept(TokenType.COMPILER):
|
||||||
self.hash_not_parsed_or_raise(initial_spec, self.ctx.current_token.value)
|
|
||||||
if self.has_compiler:
|
if self.has_compiler:
|
||||||
raise spack.spec.DuplicateCompilerSpecError(
|
raise spack.spec.DuplicateCompilerSpecError(
|
||||||
f"{initial_spec} cannot have multiple compilers"
|
f"{initial_spec} cannot have multiple compilers"
|
||||||
|
@ -353,7 +348,6 @@ def parse(self, initial_spec: Optional[spack.spec.Spec] = None) -> Optional[spac
|
||||||
initial_spec.compiler = spack.spec.CompilerSpec(compiler_name.strip(), ":")
|
initial_spec.compiler = spack.spec.CompilerSpec(compiler_name.strip(), ":")
|
||||||
self.has_compiler = True
|
self.has_compiler = True
|
||||||
elif self.ctx.accept(TokenType.COMPILER_AND_VERSION):
|
elif self.ctx.accept(TokenType.COMPILER_AND_VERSION):
|
||||||
self.hash_not_parsed_or_raise(initial_spec, self.ctx.current_token.value)
|
|
||||||
if self.has_compiler:
|
if self.has_compiler:
|
||||||
raise spack.spec.DuplicateCompilerSpecError(
|
raise spack.spec.DuplicateCompilerSpecError(
|
||||||
f"{initial_spec} cannot have multiple compilers"
|
f"{initial_spec} cannot have multiple compilers"
|
||||||
|
@ -367,7 +361,6 @@ def parse(self, initial_spec: Optional[spack.spec.Spec] = None) -> Optional[spac
|
||||||
elif self.ctx.accept(TokenType.VERSION) or self.ctx.accept(
|
elif self.ctx.accept(TokenType.VERSION) or self.ctx.accept(
|
||||||
TokenType.VERSION_HASH_PAIR
|
TokenType.VERSION_HASH_PAIR
|
||||||
):
|
):
|
||||||
self.hash_not_parsed_or_raise(initial_spec, self.ctx.current_token.value)
|
|
||||||
if self.has_version:
|
if self.has_version:
|
||||||
raise spack.spec.MultipleVersionError(
|
raise spack.spec.MultipleVersionError(
|
||||||
f"{initial_spec} cannot have multiple versions"
|
f"{initial_spec} cannot have multiple versions"
|
||||||
|
@ -378,25 +371,21 @@ def parse(self, initial_spec: Optional[spack.spec.Spec] = None) -> Optional[spac
|
||||||
initial_spec.attach_git_version_lookup()
|
initial_spec.attach_git_version_lookup()
|
||||||
self.has_version = True
|
self.has_version = True
|
||||||
elif self.ctx.accept(TokenType.BOOL_VARIANT):
|
elif self.ctx.accept(TokenType.BOOL_VARIANT):
|
||||||
self.hash_not_parsed_or_raise(initial_spec, self.ctx.current_token.value)
|
|
||||||
variant_value = self.ctx.current_token.value[0] == "+"
|
variant_value = self.ctx.current_token.value[0] == "+"
|
||||||
initial_spec._add_flag(
|
initial_spec._add_flag(
|
||||||
self.ctx.current_token.value[1:].strip(), variant_value, propagate=False
|
self.ctx.current_token.value[1:].strip(), variant_value, propagate=False
|
||||||
)
|
)
|
||||||
elif self.ctx.accept(TokenType.PROPAGATED_BOOL_VARIANT):
|
elif self.ctx.accept(TokenType.PROPAGATED_BOOL_VARIANT):
|
||||||
self.hash_not_parsed_or_raise(initial_spec, self.ctx.current_token.value)
|
|
||||||
variant_value = self.ctx.current_token.value[0:2] == "++"
|
variant_value = self.ctx.current_token.value[0:2] == "++"
|
||||||
initial_spec._add_flag(
|
initial_spec._add_flag(
|
||||||
self.ctx.current_token.value[2:].strip(), variant_value, propagate=True
|
self.ctx.current_token.value[2:].strip(), variant_value, propagate=True
|
||||||
)
|
)
|
||||||
elif self.ctx.accept(TokenType.KEY_VALUE_PAIR):
|
elif self.ctx.accept(TokenType.KEY_VALUE_PAIR):
|
||||||
self.hash_not_parsed_or_raise(initial_spec, self.ctx.current_token.value)
|
|
||||||
name, value = self.ctx.current_token.value.split("=", maxsplit=1)
|
name, value = self.ctx.current_token.value.split("=", maxsplit=1)
|
||||||
name = name.strip("'\" ")
|
name = name.strip("'\" ")
|
||||||
value = value.strip("'\" ")
|
value = value.strip("'\" ")
|
||||||
initial_spec._add_flag(name, value, propagate=False)
|
initial_spec._add_flag(name, value, propagate=False)
|
||||||
elif self.ctx.accept(TokenType.PROPAGATED_KEY_VALUE_PAIR):
|
elif self.ctx.accept(TokenType.PROPAGATED_KEY_VALUE_PAIR):
|
||||||
self.hash_not_parsed_or_raise(initial_spec, self.ctx.current_token.value)
|
|
||||||
name, value = self.ctx.current_token.value.split("==", maxsplit=1)
|
name, value = self.ctx.current_token.value.split("==", maxsplit=1)
|
||||||
name = name.strip("'\" ")
|
name = name.strip("'\" ")
|
||||||
value = value.strip("'\" ")
|
value = value.strip("'\" ")
|
||||||
|
@ -411,12 +400,6 @@ def parse(self, initial_spec: Optional[spack.spec.Spec] = None) -> Optional[spac
|
||||||
|
|
||||||
return initial_spec
|
return initial_spec
|
||||||
|
|
||||||
def hash_not_parsed_or_raise(self, spec, addition):
|
|
||||||
if not self.has_hash:
|
|
||||||
return
|
|
||||||
|
|
||||||
raise spack.spec.RedundantSpecError(spec, addition)
|
|
||||||
|
|
||||||
|
|
||||||
class FileParser:
|
class FileParser:
|
||||||
"""Parse a single spec from a JSON or YAML file"""
|
"""Parse a single spec from a JSON or YAML file"""
|
||||||
|
|
|
@ -112,7 +112,6 @@
|
||||||
"UnsatisfiableDependencySpecError",
|
"UnsatisfiableDependencySpecError",
|
||||||
"AmbiguousHashError",
|
"AmbiguousHashError",
|
||||||
"InvalidHashError",
|
"InvalidHashError",
|
||||||
"RedundantSpecError",
|
|
||||||
"SpecDeprecatedError",
|
"SpecDeprecatedError",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -5331,14 +5330,6 @@ class NoSuchSpecFileError(SpecFilenameError):
|
||||||
"""Raised when a spec file doesn't exist."""
|
"""Raised when a spec file doesn't exist."""
|
||||||
|
|
||||||
|
|
||||||
class RedundantSpecError(spack.error.SpecError):
|
|
||||||
def __init__(self, spec, addition):
|
|
||||||
super().__init__(
|
|
||||||
"Attempting to add %s to spec %s which is already concrete."
|
|
||||||
" This is likely the result of adding to a spec specified by hash." % (addition, spec)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class SpecFormatStringError(spack.error.SpecError):
|
class SpecFormatStringError(spack.error.SpecError):
|
||||||
"""Called for errors in Spec format strings."""
|
"""Called for errors in Spec format strings."""
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue