]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
SourceFile: Introduce SourceFileType enumeration
authorRyan Lortie <desrt@desrt.ca>
Tue, 24 Aug 2010 17:01:39 +0000 (19:01 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 17 Sep 2010 23:00:13 +0000 (01:00 +0200)
SourceFileType has 2 possible values:
  SOURCE
  PACKAGE

and replaces the CodeWriter.external_package boolean with a new field
called 'file_type'.

codegen/valaccodebasemodule.vala
codegen/valaccodecompiler.vala
codegen/valadovabasemodule.vala
compiler/valacompiler.vala
vala/valaflowanalyzer.vala
vala/valagenieparser.vala
vala/valaparser.vala
vala/valasourcefile.vala
vala/valasymbol.vala
vapigen/valavapicheck.vala
vapigen/valavapigen.vala

index 91789d04cc1654ecb85a89511f28c628b3fcf1ee..231e1f575fdcc4e10aa56a329a8ae90d9427ca4a 100644 (file)
@@ -420,7 +420,7 @@ public class Vala.CCodeBaseModule : CodeGenerator {
                /* we're only interested in non-pkg source files */
                var source_files = context.get_source_files ();
                foreach (SourceFile file in source_files) {
-                       if (!file.external_package) {
+                       if (file.file_type == SourceFileType.SOURCE) {
                                file.accept (this);
                        }
                }
@@ -843,7 +843,7 @@ public class Vala.CCodeBaseModule : CodeGenerator {
                        return;
                }
 
-               if (!c.external) {
+               if (c.source_reference.file.file_type != SourceFileType.PACKAGE) {
                        generate_type_declaration (c.type_reference, decl_space);
 
                        c.value.emit (this);
index 6bec31348d23fcc16d17011c07751022e2738659..09ab3d619501e2aed1b08b971bb726836562f9bf 100644 (file)
@@ -105,7 +105,7 @@ public class Vala.CCodeCompiler {
                /* we're only interested in non-pkg source files */
                var source_files = context.get_source_files ();
                foreach (SourceFile file in source_files) {
-                       if (!file.external_package) {
+                       if (file.file_type == SourceFileType.SOURCE) {
                                cmdline += " " + Shell.quote (file.get_csource_filename ());
                        }
                }
@@ -137,7 +137,7 @@ public class Vala.CCodeCompiler {
 
                /* remove generated C source and header files */
                foreach (SourceFile file in source_files) {
-                       if (!file.external_package) {
+                       if (file.file_type == SourceFileType.SOURCE) {
                                if (!context.save_csources) {
                                        FileUtils.unlink (file.get_csource_filename ());
                                }
index 5feabfd7d4afce77f4fe696841744be1d81d20f2..a679d4e3d0bd7f3f8c18362df8eddcaf00a4ae25 100644 (file)
@@ -293,7 +293,7 @@ public class Vala.DovaBaseModule : CodeGenerator {
                /* we're only interested in non-pkg source files */
                var source_files = context.get_source_files ();
                foreach (SourceFile file in source_files) {
-                       if (!file.external_package) {
+                       if (file.file_type == SourceFileType.SOURCE) {
                                file.accept (this);
                        }
                }
index 9536ba7bafc3bcf7ac1d5d41ca0056ff53c65530..37bf15ca5220bfc929725dfe33d33696663d4f9b 100644 (file)
@@ -151,7 +151,7 @@ class Vala.Compiler {
                        return false;
                }
 
-               context.add_source_file (new SourceFile (context, gir_path, true));
+               context.add_source_file (new SourceFile (context, SourceFileType.PACKAGE, gir_path));
 
                return true;
        }
@@ -170,7 +170,7 @@ class Vala.Compiler {
                
                context.add_package (pkg);
                
-               context.add_source_file (new SourceFile (context, package_path, true));
+               context.add_source_file (new SourceFile (context, SourceFileType.PACKAGE, package_path));
                
                var deps_filename = Path.build_filename (Path.get_dirname (package_path), "%s.deps".printf (pkg));
                if (FileUtils.test (deps_filename, FileTest.EXISTS)) {
@@ -352,7 +352,7 @@ class Vala.Compiler {
                        if (FileUtils.test (source, FileTest.EXISTS)) {
                                var rpath = realpath (source);
                                if (run_output || source.has_suffix (".vala") || source.has_suffix (".gs")) {
-                                       var source_file = new SourceFile (context, rpath);
+                                       var source_file = new SourceFile (context, SourceFileType.SOURCE, rpath);
                                        source_file.relative_filename = source;
 
                                        if (context.profile == Profile.POSIX) {
@@ -374,7 +374,7 @@ class Vala.Compiler {
 
                                        context.add_source_file (source_file);
                                } else if (source.has_suffix (".vapi") || source.has_suffix (".gir")) {
-                                       var source_file = new SourceFile (context, rpath, true);
+                                       var source_file = new SourceFile (context, SourceFileType.PACKAGE, rpath);
                                        source_file.relative_filename = source;
 
                                        context.add_source_file (source_file);
index 74c35f6f73e418ee733c7645443c81366e22df27..5394e86b9a88857a336d58f3f92b148f26c41057 100644 (file)
@@ -108,7 +108,7 @@ public class Vala.FlowAnalyzer : CodeVisitor {
                /* we're only interested in non-pkg source files */
                var source_files = context.get_source_files ();
                foreach (SourceFile file in source_files) {
-                       if (!file.external_package) {
+                       if (file.file_type == SourceFileType.SOURCE) {
                                file.accept (this);
                        }
                }
index 28ffbacb040a4f2417c311d6ec6d58c4c7991f74..73cabb65b5d011ff29b920c524717e7718007807 100644 (file)
@@ -2639,7 +2639,7 @@ public class Vala.Genie.Parser : CodeVisitor {
                parse_declarations (cl);
 
                // ensure there is always a default construction method
-               if (!scanner.source_file.external_package
+               if (scanner.source_file.file_type == SourceFileType.SOURCE
                    && cl.default_construction_method == null) {
                        var m = new CreationMethod (cl.name, null, cl.source_reference);
                        m.access = SymbolAccessibility.PUBLIC;
@@ -2753,7 +2753,7 @@ public class Vala.Genie.Parser : CodeVisitor {
                var c = new Constant (id, type, initializer, get_src (begin), comment);
                c.access = get_access (id);
                
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        c.external = true;
                }
                if (ModifierFlags.NEW in flags) {
@@ -2789,7 +2789,7 @@ public class Vala.Genie.Parser : CodeVisitor {
 
                set_attributes (f, attrs);
 
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        f.external = true;
                }
                if (ModifierFlags.NEW in flags) {
@@ -3008,7 +3008,7 @@ public class Vala.Genie.Parser : CodeVisitor {
 
                if (accept_block ()) {
                        method.body = parse_block ();
-               } else if (scanner.source_file.external_package) {
+               } else if (scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        method.external = true;
                }
                return method;
@@ -3056,7 +3056,7 @@ public class Vala.Genie.Parser : CodeVisitor {
                if (ModifierFlags.NEW in flags) {
                        prop.hides = true;
                }
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        prop.external = true;
                }
                
@@ -3138,7 +3138,7 @@ public class Vala.Genie.Parser : CodeVisitor {
                        expect_terminator ();
                }
 
-               if (!prop.is_abstract && !scanner.source_file.external_package) {
+               if (!prop.is_abstract && scanner.source_file.file_type == SourceFileType.SOURCE) {
                        var needs_var = (readonly && (prop.get_accessor != null && prop.get_accessor.body == null));
 
                        if (!needs_var) {
@@ -3321,7 +3321,7 @@ public class Vala.Genie.Parser : CodeVisitor {
                } else {
                        iface.access = get_access (sym.name);
                }
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        iface.external = true;
                }
                set_attributes (iface, attrs);
@@ -3390,7 +3390,7 @@ public class Vala.Genie.Parser : CodeVisitor {
                } else {
                        en.access = get_access (sym.name);
                }
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        en.external = true;
                }
                set_attributes (en, attrs);
@@ -3650,7 +3650,7 @@ public class Vala.Genie.Parser : CodeVisitor {
 
                if (accept_block ()) {
                        method.body = parse_block ();
-               } else if (scanner.source_file.external_package) {
+               } else if (scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        method.external = true;
                }
                
@@ -3711,7 +3711,7 @@ public class Vala.Genie.Parser : CodeVisitor {
                if (!(ModifierFlags.STATIC in flags)) {
                        d.has_target = true;
                }
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        d.external = true;
                }
 
index 9f4f34d941e40733d290d97fd4fb7aaa16231628..eb4755ea2ac1e533bdf74d5a186688a2628b5b9b 100644 (file)
@@ -2378,7 +2378,7 @@ public class Vala.Parser : CodeVisitor {
                if (ModifierFlags.ABSTRACT in flags) {
                        cl.is_abstract = true;
                }
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        cl.external = true;
                }
                set_attributes (cl, attrs);
@@ -2392,7 +2392,7 @@ public class Vala.Parser : CodeVisitor {
                parse_declarations (cl);
 
                // ensure there is always a default construction method
-               if (!scanner.source_file.external_package
+               if (scanner.source_file.file_type == SourceFileType.SOURCE
                    && cl.default_construction_method == null) {
                        var m = new CreationMethod (cl.name, null, cl.source_reference);
                        m.access = SymbolAccessibility.PUBLIC;
@@ -2500,7 +2500,7 @@ public class Vala.Parser : CodeVisitor {
 
                var c = new Constant (id, type, initializer, get_src (begin), comment);
                c.access = access;
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        c.external = true;
                }
                if (ModifierFlags.NEW in flags) {
@@ -2535,7 +2535,7 @@ public class Vala.Parser : CodeVisitor {
                    || ModifierFlags.OVERRIDE in flags) {
                        Report.error (f.source_reference, "abstract, virtual, and override modifiers are not applicable to fields");
                }
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        f.external = true;
                }
                if (ModifierFlags.NEW in flags) {
@@ -2704,7 +2704,7 @@ public class Vala.Parser : CodeVisitor {
                }
                if (!accept (TokenType.SEMICOLON)) {
                        method.body = parse_block ();
-               } else if (scanner.source_file.external_package) {
+               } else if (scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        method.external = true;
                }
                return method;
@@ -2750,7 +2750,7 @@ public class Vala.Parser : CodeVisitor {
                if (ModifierFlags.ASYNC in flags) {
                        Report.error (prop.source_reference, "async properties are not supported yet");
                }
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        prop.external = true;
                }
                if (context.profile == Profile.DOVA) {
@@ -2938,7 +2938,7 @@ public class Vala.Parser : CodeVisitor {
                }
                var st = new Struct (sym.name, get_src (begin), comment);
                st.access = access;
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        st.external = true;
                }
                set_attributes (st, attrs);
@@ -2998,7 +2998,7 @@ public class Vala.Parser : CodeVisitor {
                }
                var iface = new Interface (sym.name, get_src (begin), comment);
                iface.access = access;
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        iface.external = true;
                }
                set_attributes (iface, attrs);
@@ -3059,7 +3059,7 @@ public class Vala.Parser : CodeVisitor {
                var sym = parse_symbol_name ();
                var en = new Enum (sym.name, get_src (begin), comment);
                en.access = access;
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        en.external = true;
                }
                set_attributes (en, attrs);
@@ -3123,7 +3123,7 @@ public class Vala.Parser : CodeVisitor {
                var sym = parse_symbol_name ();
                var ed = new ErrorDomain (sym.name, get_src (begin), comment);
                ed.access = access;
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        ed.external = true;
                }
                set_attributes (ed, attrs);
@@ -3375,7 +3375,7 @@ public class Vala.Parser : CodeVisitor {
                set_attributes (method, attrs);
                if (!accept (TokenType.SEMICOLON)) {
                        method.body = parse_block ();
-               } else if (scanner.source_file.external_package) {
+               } else if (scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        method.external = true;
                }
                return method;
@@ -3403,7 +3403,7 @@ public class Vala.Parser : CodeVisitor {
                } else {
                        d.has_target = true;
                }
-               if (ModifierFlags.EXTERN in flags || scanner.source_file.external_package) {
+               if (ModifierFlags.EXTERN in flags || scanner.source_file.file_type == SourceFileType.PACKAGE) {
                        d.external = true;
                }
                foreach (TypeParameter type_param in type_param_list) {
index e58e009d4e08bb4223f4f228762e25acdabe0b83..ff4be85e99873a7ae33334bed404b5b516fa981c 100644 (file)
@@ -40,7 +40,7 @@ public class Vala.SourceFile {
        /**
         * Specifies whether this file is a VAPI package file.
         */
-       public bool external_package { get; set; }
+       public SourceFileType file_type { get; set; }
 
        /**
         *  GIR Namespace for this source file, if it's a VAPI package
@@ -91,10 +91,10 @@ public class Vala.SourceFile {
         * @param pkg      true if this is a VAPI package file
         * @return         newly created source file
         */
-       public SourceFile (CodeContext context, string filename, bool pkg = false, string? content = null) {
-               this.filename = filename;
-               this.external_package = pkg;
+       public SourceFile (CodeContext context, SourceFileType type, string filename, string? content = null) {
                this.context = context;
+               this.file_type = type;
+               this.filename = filename;
                this.content = content;
        }
 
@@ -314,3 +314,7 @@ public class Vala.SourceFile {
        }
 }
 
+public enum SourceFileType {
+       SOURCE,
+       PACKAGE
+}
index cfe25402c3d011a690c3af859d1ba29d540db656..a189a8e1d9dc3607d523fb05587d1f3caa9fceb4 100644 (file)
@@ -168,7 +168,7 @@ public abstract class Vala.Symbol : CodeNode {
         */
        public bool external_package {
                get {
-                       return (source_reference != null && source_reference.file.external_package);
+                       return (source_reference != null && source_reference.file.file_type == SourceFileType.PACKAGE);
                }
        }
 
index 4a98c96802b4d9b3e39299e75cb8cbfa6ff34be6..a17d2ded2560532950edae2c49d2c0e700af6579 100644 (file)
@@ -24,8 +24,8 @@ using GLib;
 
 class Vala.VAPICheck : Object {
        public VAPICheck (string gidlname, CodeContext context = new CodeContext ()) {
-               gidl = new SourceFile (context, gidlname);
-               metadata = new SourceFile (context, gidlname.substring (0, gidlname.length - 5) + ".metadata");
+               gidl = new SourceFile (context, SourceFileType.SOURCE, gidlname);
+               metadata = new SourceFile (context, SourceFileType.SOURCE, gidlname.substring (0, gidlname.length - 5) + ".metadata");
                this.context = context;
        }
 
index 403fa89f4a88e04f2ac93f65ce9b787df31b4952..577d5192708bc5422a9a9355b1335688a00a33f6 100644 (file)
@@ -77,7 +77,7 @@ class Vala.VAPIGen : Object {
                
                context.add_package (pkg);
 
-               context.add_source_file (new SourceFile (context, package_path, true));
+               context.add_source_file (new SourceFile (context, SourceFileType.PACKAGE, package_path));
 
                var deps_filename = Path.build_filename (Path.get_dirname (package_path), "%s.deps".printf (pkg));
                if (FileUtils.test (deps_filename, FileTest.EXISTS)) {
@@ -176,7 +176,7 @@ class Vala.VAPIGen : Object {
                
                foreach (string source in sources) {
                        if (FileUtils.test (source, FileTest.EXISTS)) {
-                               context.add_source_file (new SourceFile (context, source, true));
+                               context.add_source_file (new SourceFile (context, SourceFileType.PACKAGE, source));
                        } else {
                                Report.error (null, "%s not found".printf (source));
                        }
@@ -240,7 +240,7 @@ class Vala.VAPIGen : Object {
                        // interface writer ignores external packages
                        foreach (SourceFile file in context.get_source_files ()) {
                                if (!file.filename.has_suffix (".vapi")) {
-                                       file.external_package = false;
+                                       file.file_type = SourceFileType.SOURCE;
                                }
                        }