mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-05-04 15:59:08 -04:00
decompile: Fix bug in lookup tags
A lookup tag with no type attribute would crash the decompiler, even if that was valid. This wasn't caught by the tests since blueprint never generates such XML. Also fixed a bug in the tests that caused decompiler-only tests not to run.
This commit is contained in:
parent
a83c7e936d
commit
a12d3f5c81
5 changed files with 39 additions and 13 deletions
|
@ -302,12 +302,18 @@ expr.children = [
|
|||
|
||||
@decompiler("lookup", skip_children=True, cdata=True)
|
||||
def decompile_lookup(
|
||||
ctx: DecompileCtx, gir: gir.GirContext, cdata: str, name: str, type: str
|
||||
ctx: DecompileCtx,
|
||||
gir: gir.GirContext,
|
||||
cdata: str,
|
||||
name: str,
|
||||
type: T.Optional[str] = None,
|
||||
):
|
||||
if ctx.parent_node is not None and ctx.parent_node.tag == "property":
|
||||
ctx.print("expr ")
|
||||
|
||||
if t := ctx.type_by_cname(type):
|
||||
if type is None:
|
||||
type = ""
|
||||
elif t := ctx.type_by_cname(type):
|
||||
type = decompile.full_name(t)
|
||||
else:
|
||||
type = "$" + type
|
||||
|
@ -327,7 +333,7 @@ def decompile_lookup(
|
|||
if constant == ctx.template_class:
|
||||
ctx.print("template." + name)
|
||||
elif constant == "":
|
||||
ctx.print("item as <" + type + ">." + name)
|
||||
ctx.print(f"item as <{type}>.{name}")
|
||||
else:
|
||||
ctx.print(constant + "." + name)
|
||||
return
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue