Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package blueprint-compiler for 
openSUSE:Factory checked in at 2026-07-08 17:32:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/blueprint-compiler (Old)
 and      /work/SRC/openSUSE:Factory/.blueprint-compiler.new.1982 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "blueprint-compiler"

Wed Jul  8 17:32:09 2026 rev:11 rq:1364083 version:0.20.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/blueprint-compiler/blueprint-compiler.changes    
2026-04-10 17:45:20.494842886 +0200
+++ 
/work/SRC/openSUSE:Factory/.blueprint-compiler.new.1982/blueprint-compiler.changes
  2026-07-08 17:32:15.044504452 +0200
@@ -1,0 +2,16 @@
+Sun Jul  5 21:19:14 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Update to version 0.20.4:
+  + Fixed: Fixed a crash in Python 3.9.
+- Changes from version 0.20.3:
+  + Fixed:
+    - Fixed GtkTryExpression tests that were failing on GTK 4.22.
+    - The decompiler no longer emits some unnecessary casts.
+- Changes from version 0.20.2:
+  + Fixed: Fixed a test failure due to an updated version of black.
+- Changes from version 0.20.1:
+  + Fixed: Fix casting from uint to bool, which should work but was
+    generating an error.
+  + Docs: Fixed the syntax documentation for TryExpression.
+
+-------------------------------------------------------------------

Old:
----
  blueprint-compiler-0.20.0.tar.xz

New:
----
  blueprint-compiler-0.20.4.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ blueprint-compiler.spec ++++++
--- /var/tmp/diff_new_pack.WQwbaJ/_old  2026-07-08 17:32:17.112576348 +0200
+++ /var/tmp/diff_new_pack.WQwbaJ/_new  2026-07-08 17:32:17.112576348 +0200
@@ -23,7 +23,7 @@
 %endif
 
 Name:           blueprint-compiler
-Version:        0.20.0
+Version:        0.20.4
 Release:        0
 Summary:        A markup language for GTK user interfaces
 License:        LGPL-3.0-or-later

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.WQwbaJ/_old  2026-07-08 17:32:17.176578573 +0200
+++ /var/tmp/diff_new_pack.WQwbaJ/_new  2026-07-08 17:32:17.180578712 +0200
@@ -1,5 +1,5 @@
-mtime: 1774254144
-commit: 6474ff9d3f1f7498a86d05d68a3baf7163114e1680b4b5a4fa9ea055de9d99a4
+mtime: 1783286614
+commit: 2dd3fab6cd40258d72203eb6486e0ddbb4fd918da2956add8b6eb63a6830bd25
 url: https://src.opensuse.org/GNOME/blueprint-compiler
 revision: factory
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.WQwbaJ/_old  2026-07-08 17:32:17.200579407 +0200
+++ /var/tmp/diff_new_pack.WQwbaJ/_new  2026-07-08 17:32:17.204579547 +0200
@@ -3,7 +3,7 @@
   <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
     <param 
name="url">https://gitlab.gnome.org/GNOME/blueprint-compiler.git</param>
-    <param name="revision">v0.20.0</param>
+    <param name="revision">v0.20.4</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param name="versionrewrite-pattern">v?(.*)(?:\+0)</param>
     <param name="versionrewrite-replacement">\1</param>

++++++ blueprint-compiler-0.20.0.tar.xz -> blueprint-compiler-0.20.4.tar.xz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/blueprint-compiler-0.20.0/NEWS.md 
new/blueprint-compiler-0.20.4/NEWS.md
--- old/blueprint-compiler-0.20.0/NEWS.md       2026-02-27 00:51:22.000000000 
+0100
+++ new/blueprint-compiler-0.20.4/NEWS.md       2026-03-20 03:47:16.000000000 
+0100
@@ -1,3 +1,27 @@
+# v0.20.4
+
+## Fixed
+- Fixed a crash in Python 3.9.
+
+# v0.20.3
+
+## Fixed
+- Fixed GtkTryExpression tests that were failing on GTK 4.22.
+- The decompiler no longer emits some unnecessary casts.
+
+# v0.20.2
+
+## Fixed
+- Fixed a test failure due to an updated version of black.
+
+# v0.20.1
+
+## Fixed
+- Fix casting from uint to bool, which should work but was generating an error.
+
+## Docs
+- Fixed the syntax documentation for TryExpression. (Jamie Gravendeel)
+
 # v0.20.0
 
 ## Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/blueprintcompiler/ast_utils.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/ast_utils.py
--- old/blueprint-compiler-0.20.0/blueprintcompiler/ast_utils.py        
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/blueprintcompiler/ast_utils.py        
2026-03-20 03:47:16.000000000 +0100
@@ -178,6 +178,13 @@
                     self.attrs_by_type[attr_type].append((name, item))
         return self.attrs_by_type[attr_type]
 
+    def autofix(self) -> T.Generator[TextEdit, None, None]:
+        fixes = [getattr(self, name) for name, attr in 
self._attrs_by_type(Autofix)]
+        yield from [f for f in fixes if f is not None]
+
+        for child in self.children:
+            yield from child.autofix()
+
     def get_docs(self, idx: int) -> T.Optional[str]:
         for name, attr in self._attrs_by_type(Docs):
             if attr.token_name:
@@ -291,6 +298,22 @@
     return decorator
 
 
+class Autofix:
+    def __init__(self, func: T.Callable[[], T.Optional[TextEdit]]):
+        self.func = func
+
+    def __get__(self, instance, owner):
+        if instance is None:
+            return self
+        return self.func(instance)
+
+
+def autofix(func):
+    """Decorator for functions that can apply auto-fixes to Blueprint files. 
This is used when decompiling."""
+
+    return Autofix(func)
+
+
 class Docs:
     def __init__(self, func, token_name=None):
         self.func = func
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/blueprintcompiler/decompiler.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/decompiler.py
--- old/blueprint-compiler-0.20.0/blueprintcompiler/decompiler.py       
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/blueprintcompiler/decompiler.py       
2026-03-20 03:47:16.000000000 +0100
@@ -23,8 +23,10 @@
 from enum import Enum
 
 from . import formatter
+from .errors import MultipleErrors
 from .gir import *
-from .utils import Colors, escape_quote
+from .tokenizer import tokenize
+from .utils import Colors, TextEdit, escape_quote
 from .xml_reader import Element, parse, parse_string
 
 __all__ = ["decompile"]
@@ -274,22 +276,32 @@
         raise e
 
 
-def decompile(data: str) -> str:
-    ctx = DecompileCtx()
+def decompile_xml(xml: Element):
+    from . import parser
 
-    xml = parse(data)
+    ctx = DecompileCtx()
     decompile_element(ctx, None, xml)
 
-    return ctx.result
+    tokens = tokenize(ctx.result)
+    ast, errors, warnings = parser.parse(tokens)
 
+    result = ctx.result
+    if ast is not None:
+        fixes = [*ast.autofix()]
+        result = TextEdit.apply_edits(ctx.result, fixes)
 
-def decompile_string(data: str) -> str:
-    ctx = DecompileCtx()
+    return ast, errors, warnings, result
 
-    xml = parse_string(data)
-    decompile_element(ctx, None, xml)
 
-    return ctx.result
+def decompile(
+    data: str,
+) -> T.Tuple[T.Any, T.Optional[MultipleErrors], T.List[CompileError], str]:
+    return decompile_xml(parse(data))
+
+
+def decompile_string(data: str) -> str:
+    ast, errors, warnings, result = decompile_xml(parse_string(data))
+    return result
 
 
 def canon(string: str) -> str:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/blueprintcompiler/errors.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/errors.py
--- old/blueprint-compiler-0.20.0/blueprintcompiler/errors.py   2026-02-27 
00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/blueprintcompiler/errors.py   2026-03-20 
03:47:16.000000000 +0100
@@ -235,12 +235,10 @@
     print(traceback.format_exc())
     print(f"Arguments: {sys.argv}")
     print(f"Version: {main.VERSION}\n")
-    print(
-        f"""{Colors.BOLD}{Colors.RED}***** COMPILER BUG *****
+    print(f"""{Colors.BOLD}{Colors.RED}***** COMPILER BUG *****
 The blueprint-compiler program has crashed. Please report the above stacktrace,
 along with the input file(s) if possible, on GitLab:
 
{Colors.BOLD}{Colors.BLUE}{Colors.UNDERLINE}https://gitlab.gnome.org/GNOME/blueprint-compiler/-/issues/new?issue
-{Colors.CLEAR}"""
-    )
+{Colors.CLEAR}""")
 
     sys.exit(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/blueprintcompiler/interactive_port.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/interactive_port.py
--- old/blueprint-compiler-0.20.0/blueprintcompiler/interactive_port.py 
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/blueprintcompiler/interactive_port.py 
2026-03-20 03:47:16.000000000 +0100
@@ -22,8 +22,8 @@
 import os
 import typing as T
 
-from . import decompiler, parser, tokenizer
-from .errors import CompilerBugError, MultipleErrors, PrintableError
+from . import decompiler
+from .errors import CompilerBugError, PrintableError
 from .outputs.xml import XmlOutput
 from .utils import Colors
 
@@ -44,39 +44,34 @@
         return CouldNotPort("already exists")
 
     try:
-        decompiled = decompiler.decompile(in_file)
+        ast, errors, warnings, decompiled = decompiler.decompile(in_file)
 
-        try:
-            # make sure the output compiles
-            tokens = tokenizer.tokenize(decompiled)
-            ast, errors, warnings = parser.parse(tokens)
-
-            for warning in warnings:
-                warning.pretty_print(out_file, decompiled)
-
-            if errors:
-                raise errors
-            if not ast:
-                raise CompilerBugError()
-
-            output = XmlOutput()
-            output.emit(ast)
-        except PrintableError as e:
-            e.pretty_print(out_file, decompiled)
+        for warning in warnings:
+            warning.pretty_print(out_file, decompiled)
 
-            print(
-                f"{Colors.RED}{Colors.BOLD}error: the generated file does not 
compile{Colors.CLEAR}"
-            )
-            print(f"in {Colors.UNDERLINE}{out_file}{Colors.NO_UNDERLINE}")
-            print(
-                f"""{Colors.FAINT}Either the original XML file had an error, 
or there is a bug in the
-porting tool. If you think it's a bug (which is likely), please file an issue 
on GitLab:
-{Colors.BLUE}{Colors.UNDERLINE}https://gitlab.gnome.org/GNOME/blueprint-compiler/-/issues/new?issue{Colors.CLEAR}\n""";
-            )
+        if errors:
+            raise errors
+        if not ast:
+            raise CompilerBugError()
 
-            return CouldNotPort("does not compile")
+        output = XmlOutput()
+        output.emit(ast)
 
         return decompiled
+    except PrintableError as e:
+        e.pretty_print(out_file, decompiled)
+
+        print(
+            f"{Colors.RED}{Colors.BOLD}error: the generated file does not 
compile{Colors.CLEAR}"
+        )
+        print(f"in {Colors.UNDERLINE}{out_file}{Colors.NO_UNDERLINE}")
+        print(
+            f"""{Colors.FAINT}Either the original XML file had an error, or 
there is a bug in the
+porting tool. If you think it's a bug (which is likely), please file an issue 
on GitLab:
+{Colors.BLUE}{Colors.UNDERLINE}https://gitlab.gnome.org/GNOME/blueprint-compiler/-/issues/new?issue{Colors.CLEAR}\n""";
+        )
+
+        return CouldNotPort("does not compile")
 
     except decompiler.UnsupportedError as e:
         e.print(in_file)
@@ -133,16 +128,14 @@
         VERSION = "main" if VERSION == "uninstalled" else "v" + VERSION
 
         with open("subprojects/blueprint-compiler.wrap", "w") as wrap:
-            wrap.write(
-                f"""[wrap-git]
+            wrap.write(f"""[wrap-git]
 directory = blueprint-compiler
 url = https://gitlab.gnome.org/GNOME/blueprint-compiler.git
 revision = {VERSION}
 depth = 1
 
 [provide]
-program_names = blueprint-compiler"""
-            )
+program_names = blueprint-compiler""")
 
     print()
 
@@ -248,8 +241,7 @@
                     print(
                         f"{Colors.BOLD}Paste the following into 
{Colors.UNDERLINE}{meson_file}{Colors.NO_UNDERLINE}:{Colors.CLEAR}"
                     )
-                    print(
-                        f"""
+                    print(f"""
 blueprints = custom_target('blueprints',
   input: files(
     {file_list}
@@ -257,8 +249,7 @@
   output: '.',
   command: [find_program('blueprint-compiler'), 'batch-compile', '--minify', 
'@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'],
 )
-"""
-                    )
+""")
                     enter()
 
                     print(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/blueprintcompiler/language/common.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/language/common.py
--- old/blueprint-compiler-0.20.0/blueprintcompiler/language/common.py  
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/blueprintcompiler/language/common.py  
2026-03-20 03:47:16.000000000 +0100
@@ -20,7 +20,7 @@
 
 from .. import decompiler as decompile
 from .. import gir
-from ..ast_utils import AstNode, context, docs, validate
+from ..ast_utils import AstNode, autofix, context, docs, validate
 from ..completions_utils import *
 from ..decompiler import (
     DecompileCtx,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/blueprintcompiler/language/expression.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/language/expression.py
--- old/blueprint-compiler-0.20.0/blueprintcompiler/language/expression.py      
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/blueprintcompiler/language/expression.py      
2026-03-20 03:47:16.000000000 +0100
@@ -77,6 +77,17 @@
                     f"Cannot assign {self.type.full_name} to 
{expected_type.full_name}{castable}"
                 )
 
+    @autofix
+    def autofix_cast(self):
+        expected_type = self.parent.context[ValueTypeCtx].value_type
+        if self.type is not None and expected_type is not None:
+            if not self.type.assignable_to(expected_type):
+                if self.type.castable_to(expected_type):
+                    range = Range(
+                        self.range.end, self.range.end, 
self.range.original_text
+                    )
+                    return TextEdit(range, f" as <{expected_type.full_name}>")
+
 
 class InfixExpr(ExprBase):
     @property
@@ -246,9 +257,9 @@
         if self.type is None or self.lhs.type is None:
             return
 
-        if not self.type.assignable_to(
-            self.lhs.type
-        ) and not self.lhs.type.assignable_to(self.type):
+        if not self.type.castable_to(self.lhs.type) and not 
self.lhs.type.castable_to(
+            self.type
+        ):
             raise CompileError(
                 f"Invalid cast. No instance of {self.lhs.type.full_name} can 
be an instance of {self.type.full_name}."
             )
@@ -270,6 +281,19 @@
     def ref_docs(self):
         return get_docs_section("Syntax CastExpression")
 
+    @autofix
+    def autofix_unnecessary_cast(self):
+        if self.type is None:
+            return
+
+        expected_type = self.parent.context[ValueTypeCtx].value_type
+        if (
+            expected_type is not None
+            and self.type.assignable_to(expected_type)
+            and expected_type.assignable_to(self.type)
+        ):
+            return TextEdit(self.range.with_preceding_whitespace, "")
+
 
 class ClosureArg(AstNode):
     grammar = Expression
@@ -497,7 +521,7 @@
     if ctx.parent_node is not None and ctx.parent_node.tag == "property":
         ctx.print("expr ")
 
-    ctx.print("try(")
+    ctx.print("try{")
 
     assert ctx.current_node is not None
     for i, node in enumerate(ctx.current_node.children):
@@ -507,4 +531,4 @@
         if i < len(ctx.current_node.children) - 1:
             ctx.print(", ")
 
-    ctx.end_block_with(")")
+    ctx.end_block_with("}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/blueprintcompiler/linter_rules/avoid_all_caps.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/linter_rules/avoid_all_caps.py
--- 
old/blueprint-compiler-0.20.0/blueprintcompiler/linter_rules/avoid_all_caps.py  
    2026-02-27 00:51:22.000000000 +0100
+++ 
new/blueprint-compiler-0.20.4/blueprintcompiler/linter_rules/avoid_all_caps.py  
    2026-03-20 03:47:16.000000000 +0100
@@ -12,7 +12,7 @@
     def check(self, type, child, stack):
         for property in child.content.children[Property]:
             if 
annotations.is_property_user_facing_string(property.gir_property):
-                (string, range) = self.get_string_value(property)
+                string, range = self.get_string_value(property)
                 # Show linter error for upper case and multi letter strings
                 if string and string.isupper() and len(string) > 1:
                     self.problems.append(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/blueprintcompiler/linter_rules/prefer_unicode_chars.py
 
new/blueprint-compiler-0.20.4/blueprintcompiler/linter_rules/prefer_unicode_chars.py
--- 
old/blueprint-compiler-0.20.0/blueprintcompiler/linter_rules/prefer_unicode_chars.py
        2026-02-27 00:51:22.000000000 +0100
+++ 
new/blueprint-compiler-0.20.4/blueprintcompiler/linter_rules/prefer_unicode_chars.py
        2026-03-20 03:47:16.000000000 +0100
@@ -74,7 +74,7 @@
                 self.check_property(property)
 
     def check_property(self, property):
-        (string, range) = self.get_string_value(property)
+        string, range = self.get_string_value(property)
         if string is None:
             return
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/blueprint-compiler-0.20.0/blueprintcompiler/types.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/types.py
--- old/blueprint-compiler-0.20.0/blueprintcompiler/types.py    2026-02-27 
00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/blueprintcompiler/types.py    2026-03-20 
03:47:16.000000000 +0100
@@ -344,6 +344,9 @@
     def assignable_to(self, other: GirType) -> bool:
         return isinstance(other, StringType)
 
+    def transformable_to(self, other: GirType) -> bool:
+        return isinstance(other, StringType)
+
 
 class TypeType(BasicType):
     name = "GType"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/blueprint-compiler-0.20.0/blueprintcompiler/utils.py 
new/blueprint-compiler-0.20.4/blueprintcompiler/utils.py
--- old/blueprint-compiler-0.20.0/blueprintcompiler/utils.py    2026-02-27 
00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/blueprintcompiler/utils.py    2026-03-20 
03:47:16.000000000 +0100
@@ -228,3 +228,17 @@
 
     def to_json(self):
         return {"range": self.range.to_json(), "newText": self.newText}
+
+    @staticmethod
+    def apply_edits(string: str, edits: T.List["TextEdit"]):
+        offset = 0
+        edits = sorted(edits, key=lambda e: e.range.start)
+        for edit in edits:
+            string = (
+                string[: edit.range.start + offset]
+                + edit.newText
+                + string[edit.range.end + offset :]
+            )
+            offset += len(edit.newText) - edit.range.length
+
+        return string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/blueprint-compiler-0.20.0/docs/flatpak.rst 
new/blueprint-compiler-0.20.4/docs/flatpak.rst
--- old/blueprint-compiler-0.20.0/docs/flatpak.rst      2026-02-27 
00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/docs/flatpak.rst      2026-03-20 
03:47:16.000000000 +0100
@@ -17,7 +17,7 @@
        {
          "type": "git",
          "url": "https://gitlab.gnome.org/GNOME/blueprint-compiler";,
-         "tag": "v0.20.0"
+         "tag": "v0.20.4"
        }
      ]
    }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/docs/reference/expressions.rst 
new/blueprint-compiler-0.20.4/docs/reference/expressions.rst
--- old/blueprint-compiler-0.20.0/docs/reference/expressions.rst        
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/docs/reference/expressions.rst        
2026-03-20 03:47:16.000000000 +0100
@@ -107,7 +107,7 @@
 .. code-block:: blueprint
 
    Label {
-     label: bind try (template.account.username, "Guest");
+     label: bind try { template.account.username, "Guest" };
    }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/blueprint-compiler-0.20.0/meson.build 
new/blueprint-compiler-0.20.4/meson.build
--- old/blueprint-compiler-0.20.0/meson.build   2026-02-27 00:51:22.000000000 
+0100
+++ new/blueprint-compiler-0.20.4/meson.build   2026-03-20 03:47:16.000000000 
+0100
@@ -1,5 +1,5 @@
 project('blueprint-compiler',
-  version: '0.20.0',
+  version: '0.20.4',
 )
 
 prefix = get_option('prefix')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/tests/samples/cast_uint_to_bool.blp 
new/blueprint-compiler-0.20.4/tests/samples/cast_uint_to_bool.blp
--- old/blueprint-compiler-0.20.0/tests/samples/cast_uint_to_bool.blp   
1970-01-01 01:00:00.000000000 +0100
+++ new/blueprint-compiler-0.20.4/tests/samples/cast_uint_to_bool.blp   
2026-03-20 03:47:16.000000000 +0100
@@ -0,0 +1,5 @@
+using Gtk 4.0;
+
+DropDown dropdown {
+  visible: bind dropdown.selected as <bool>;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/tests/samples/cast_uint_to_bool.ui 
new/blueprint-compiler-0.20.4/tests/samples/cast_uint_to_bool.ui
--- old/blueprint-compiler-0.20.0/tests/samples/cast_uint_to_bool.ui    
1970-01-01 01:00:00.000000000 +0100
+++ new/blueprint-compiler-0.20.4/tests/samples/cast_uint_to_bool.ui    
2026-03-20 03:47:16.000000000 +0100
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT EDIT!
+This file was @generated by blueprint-compiler. Instead, edit the
+corresponding .blp file and regenerate this file with blueprint-compiler.
+-->
+<interface>
+  <requires lib="gtk" version="4.0"/>
+  <object class="GtkDropDown" id="dropdown">
+    <property name="visible" bind-source="dropdown" bind-property="selected" 
bind-flags="sync-create"/>
+  </object>
+</interface>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/tests/samples/expr_closure_args.blp 
new/blueprint-compiler-0.20.4/tests/samples/expr_closure_args.blp
--- old/blueprint-compiler-0.20.0/tests/samples/expr_closure_args.blp   
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/tests/samples/expr_closure_args.blp   
2026-03-20 03:47:16.000000000 +0100
@@ -1,5 +1,5 @@
 using Gtk 4.0;
 
 Label {
-  label: bind $my-closure(true, 10, "Hello") as <string>;
+  label: bind $my-closure(true, 10, "Hello");
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/tests/samples/expr_closure_dec.blp 
new/blueprint-compiler-0.20.4/tests/samples/expr_closure_dec.blp
--- old/blueprint-compiler-0.20.0/tests/samples/expr_closure_dec.blp    
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/tests/samples/expr_closure_dec.blp    
2026-03-20 03:47:16.000000000 +0100
@@ -1,5 +1,5 @@
 using Gtk 4.0;
 
 Label my-label {
-  label: bind $my-closure(my-label.margin-bottom) as <string>;
+  label: bind $my-closure(my-label.margin-bottom);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/tests/samples/expr_closure_inferred_type_dec.blp 
new/blueprint-compiler-0.20.4/tests/samples/expr_closure_inferred_type_dec.blp
--- 
old/blueprint-compiler-0.20.0/tests/samples/expr_closure_inferred_type_dec.blp  
    2026-02-27 00:51:22.000000000 +0100
+++ 
new/blueprint-compiler-0.20.4/tests/samples/expr_closure_inferred_type_dec.blp  
    1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-using Gtk 4.0;
-
-Label {
-  label: bind $func() as <string>;
-}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/tests/samples/expr_translated.blp 
new/blueprint-compiler-0.20.4/tests/samples/expr_translated.blp
--- old/blueprint-compiler-0.20.0/tests/samples/expr_translated.blp     
2026-02-27 00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/tests/samples/expr_translated.blp     
2026-03-20 03:47:16.000000000 +0100
@@ -1,9 +1,9 @@
 using Gtk 4.0;
 
 Label {
-  label: bind $closure(_("Hello, world!")) as <string>;
+  label: bind $closure(_("Hello, world!"));
 }
 
 Label {
-  label: bind $closure(C_("translation context", "Hello")) as <string>;
+  label: bind $closure(C_("translation context", "Hello"));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/blueprint-compiler-0.20.0/tests/samples/expr_try.blp 
new/blueprint-compiler-0.20.4/tests/samples/expr_try.blp
--- old/blueprint-compiler-0.20.0/tests/samples/expr_try.blp    2026-02-27 
00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/tests/samples/expr_try.blp    2026-03-20 
03:47:16.000000000 +0100
@@ -1,6 +1,6 @@
 using Gtk 4.0;
 
 Button button {
-  label: bind try { button.label, $backup_label(button), "Hello, world!" } as 
<string>;
+  label: bind try { button.label, $backup_label(button), "Hello, world!" };
   child: bind try { $expr1() as <Label>, $expr2() as <Button> };
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/blueprint-compiler-0.20.0/tests/samples/issue_221.blp 
new/blueprint-compiler-0.20.4/tests/samples/issue_221.blp
--- old/blueprint-compiler-0.20.0/tests/samples/issue_221.blp   2026-02-27 
00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/tests/samples/issue_221.blp   2026-03-20 
03:47:16.000000000 +0100
@@ -1,5 +1,5 @@
 using Gtk 4.0;
 
 Box {
-  orientation: bind $test() as <Orientation>;
+  orientation: bind $test();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/blueprint-compiler-0.20.0/tests/test_samples.py 
new/blueprint-compiler-0.20.4/tests/test_samples.py
--- old/blueprint-compiler-0.20.0/tests/test_samples.py 2026-02-27 
00:51:22.000000000 +0100
+++ new/blueprint-compiler-0.20.4/tests/test_samples.py 2026-03-20 
03:47:16.000000000 +0100
@@ -178,9 +178,9 @@
             name = name.removesuffix("_dec")
             ui_path = (Path(__file__).parent / f"samples/{name}.ui").resolve()
 
-            actual = decompiler.decompile(ui_path).strip()
+            ast, errors, warnings, actual = decompiler.decompile(ui_path)
 
-            self.assertEqual(actual, expected)
+            self.assertEqual(actual.strip(), expected)
         except PrintableError as e:  # pragma: no cover
             e.pretty_print(name + ".blp", expected)
             raise AssertionError()
@@ -202,7 +202,10 @@
                 "expr_closure",
                 "expr_closure_inferred_type",
                 "expr_closure_args",
+                "expr_null",
+                "expr_null_infer_type",
                 "expr_translated",
+                "expr_try",
                 "expr_value_closure",
                 "extern_class_with_namespace",
                 "issue_221",

++++++ blueprint-compiler.obsinfo ++++++
--- /var/tmp/diff_new_pack.WQwbaJ/_old  2026-07-08 17:32:17.696596651 +0200
+++ /var/tmp/diff_new_pack.WQwbaJ/_new  2026-07-08 17:32:17.704596930 +0200
@@ -1,5 +1,5 @@
 name: blueprint-compiler
-version: 0.20.0
-mtime: 1772149882
-commit: aa5298cc1677cf855bd61f9671607362bd203f4f
+version: 0.20.4
+mtime: 1773974836
+commit: 31b62c24a72c1670d2d93dcdf2d130f1ae12778e
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-07-05 23:23:34.000000000 +0200
@@ -0,0 +1,5 @@
+*.obscpio
+*.osc
+_build.*
+.pbuild
+osc-collab.*

Reply via email to