mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-05-04 15:59:08 -04:00
grammar: Create an AST node for type names
This commit is contained in:
parent
012fc61926
commit
0a0389b1f8
10 changed files with 127 additions and 97 deletions
|
@ -651,24 +651,17 @@ class GirContext:
|
|||
did_you_mean=(ns, self.namespaces.keys()),
|
||||
)
|
||||
|
||||
def validate_type(self, name: str, ns: str):
|
||||
""" Raises an exception if there is a problem looking up the given type. """
|
||||
|
||||
def validate_class(self, name: str, ns: str):
|
||||
""" Raises an exception if there is a problem looking up the given
|
||||
class (it doesn't exist, it isn't a class, etc.) """
|
||||
|
||||
ns = ns or "Gtk"
|
||||
self.validate_ns(ns)
|
||||
|
||||
type = self.get_type(name, ns)
|
||||
|
||||
ns = ns or "Gtk"
|
||||
|
||||
if type is None:
|
||||
raise CompileError(
|
||||
f"Namespace {ns} does not contain a class called {name}",
|
||||
f"Namespace {ns} does not contain a type called {name}",
|
||||
did_you_mean=(name, self.namespaces[ns].classes.keys()),
|
||||
)
|
||||
elif not isinstance(type, Class):
|
||||
raise CompileError(
|
||||
f"{ns}.{name} is not a class",
|
||||
did_you_mean=(name, self.namespaces[ns].classes.keys()),
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue