grammar: Create an AST node for type names

This commit is contained in:
James Westman 2022-06-25 01:04:41 -05:00
parent 012fc61926
commit 0a0389b1f8
No known key found for this signature in database
GPG key ID: CE2DBA0ADB654EA6
10 changed files with 127 additions and 97 deletions

View file

@ -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()),
)