]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
mitigations
authorRico Tzschichholz <ricotz@ubuntu.com>
Sat, 26 Feb 2022 19:13:45 +0000 (20:13 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Thu, 8 Feb 2024 15:48:10 +0000 (16:48 +0100)
vala/valanamespace.vala
vapigen/valavapicheck.vala

index 1e763f32e4967379a879464bf48e91db39670d9b..91ba75f1e0157647f65c198b71ba432278b255c8 100644 (file)
@@ -400,7 +400,10 @@ public class Vala.Namespace : Symbol {
                }
 
                if (m.owner == null) {
-                       m.source_reference.file.add_node (m);
+                       if (m.source_reference == null)
+                               stdout.printf ("Missing source_reference for `%s'\n", m.get_full_name ());
+                       else
+                               m.source_reference.file.add_node (m);
                }
 
                methods.add (m);
index 51dc1cd27044f690e42b641c9f9fe87a994c87c1..bb45bdd6fc419e301ce8656ed281794beae22ea7 100644 (file)
@@ -586,6 +586,8 @@ public class Codegen : Vala.CodeVisitor {
                run.body = run_block;
                context.root.add_method (run);
 
+               context.analyzer.current_symbol = run;
+
                context.accept (this);
                context = null;
        }
@@ -686,6 +688,11 @@ public class Codegen : Vala.CodeVisitor {
                        return;
                }
 
+               if (element.parent_symbol is Class && ((Class) element.parent_symbol).is_abstract) {
+                       stdout.printf ("Skipping `%s'\n", element.get_full_name ());
+                       return;
+               }
+
                //TODO
                if (element.coroutine || element.get_type_parameters ().size > 0) {
                        return;
@@ -715,6 +722,11 @@ public class Codegen : Vala.CodeVisitor {
        }
 
        public override void visit_method (Vala.Method element) {
+               if (element.source_reference == null) {
+                       stdout.printf ("Skipping `%s'\n", element.get_full_name ());
+                       return;
+               }
+
                if (element.source_reference.file != file) {
                        return;
                }