report error when using null literal as default expression of non-null
authorJuerg Billeter <j@bitron.ch>
Mon, 14 Apr 2008 18:16:48 +0000 (18:16 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Mon, 14 Apr 2008 18:16:48 +0000 (18:16 +0000)
2008-04-14  Juerg Billeter  <j@bitron.ch>

* vala/valasemanticanalyzer.vala: report error when using null
  literal as default expression of non-null parameter,
  fixes bug 528021

* gee/readonlycollection.vala, gee/readonlylist.vala,
  gee/readonlymap.vala, gee/readonlyset.vala, vala/valascope.vala,
  ccode/valaccodeforstatement.vala, ccode/valaccodewhilestatement.vala,
  vapigen/valavapicheck.vala, vapi/glib-2.0.vapi: fix revealed bugs

svn path=/trunk/; revision=1226

ChangeLog
ccode/valaccodeforstatement.vala
ccode/valaccodewhilestatement.vala
gee/readonlycollection.vala
gee/readonlylist.vala
gee/readonlymap.vala
gee/readonlyset.vala
vala/valascope.vala
vala/valasemanticanalyzer.vala
vapi/glib-2.0.vapi
vapigen/valavapicheck.vala

index a624c32..2d74b89 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2008-04-14  Jürg Billeter  <j@bitron.ch>
 
+       * vala/valasemanticanalyzer.vala: report error when using null
+         literal as default expression of non-null parameter,
+         fixes bug 528021
+
+       * gee/readonlycollection.vala, gee/readonlylist.vala,
+         gee/readonlymap.vala, gee/readonlyset.vala, vala/valascope.vala,
+         ccode/valaccodeforstatement.vala, ccode/valaccodewhilestatement.vala,
+         vapigen/valavapicheck.vala, vapi/glib-2.0.vapi: fix revealed bugs
+
+2008-04-14  Jürg Billeter  <j@bitron.ch>
+
        * vala/valaparser.vala: fix infinite loop on invalid syntax,
          fixes bug 528017
 
index 03ca7fe..664ec73 100644 (file)
@@ -1,6 +1,6 @@
 /* valaccodeforstatement.vala
  *
- * Copyright (C) 2006-2007  Jürg Billeter
+ * Copyright (C) 2006-2008  Jürg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -40,7 +40,7 @@ public class Vala.CCodeForStatement : CCodeStatement {
        private Gee.List<CCodeExpression> initializer = new ArrayList<CCodeExpression> ();
        private Gee.List<CCodeExpression> iterator = new ArrayList<CCodeExpression> ();
        
-       public CCodeForStatement (CCodeExpression condition, CCodeStatement body = null) {
+       public CCodeForStatement (CCodeExpression condition, CCodeStatement? body = null) {
                this.body = body;
                this.condition = condition;
        }
index 1335fc5..2d1cc8f 100644 (file)
@@ -1,6 +1,6 @@
 /* valaccodewhilestatement.vala
  *
- * Copyright (C) 2006-2007  Jürg Billeter
+ * Copyright (C) 2006-2008  Jürg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -36,7 +36,7 @@ public class Vala.CCodeWhileStatement : CCodeStatement {
         */
        public CCodeStatement body { get; set; }
        
-       public CCodeWhileStatement (CCodeExpression cond, CCodeStatement stmt = null) {
+       public CCodeWhileStatement (CCodeExpression cond, CCodeStatement? stmt = null) {
                condition = cond;
                body = stmt;
        }
index c54226e..e0ec563 100644 (file)
@@ -36,7 +36,7 @@ public class Gee.ReadOnlyCollection<G> : Object, Iterable<G>, Collection<G> {
 
        private Collection<G> _collection;
 
-       public ReadOnlyCollection (Collection<G> collection = null) {
+       public ReadOnlyCollection (Collection<G>? collection = null) {
                this.collection = collection;
        }
 
index 83efd6f..2720521 100644 (file)
@@ -36,7 +36,7 @@ public class Gee.ReadOnlyList<G> : Object, Iterable<G>, Collection<G>, List<G> {
 
        private List<G> _list;
 
-       public ReadOnlyList (List<G> list = null) {
+       public ReadOnlyList (List<G>? list = null) {
                this.list = list;
        }
 
index cba3a2d..b891189 100644 (file)
@@ -36,7 +36,7 @@ public class Gee.ReadOnlyMap<K,V> : Object, Map<K,V> {
 
        private Map<K,V> _map;
 
-       public ReadOnlyMap (Map<K,V> map = null) {
+       public ReadOnlyMap (Map<K,V>? map = null) {
                this.map = map;
        }
 
index ecf64d9..0439c8c 100644 (file)
@@ -36,7 +36,7 @@ public class Gee.ReadOnlySet<G> : Object, Iterable<G>, Collection<G>, Set<G> {
 
        private Set<G> _set;
 
-       public ReadOnlySet (Set<G> set = null) {
+       public ReadOnlySet (Set<G>? set = null) {
                this.set = set;
        }
 
index ac03889..066ae0f 100644 (file)
@@ -44,7 +44,7 @@ public class Vala.Scope : Object {
         *
         * @return newly created scope
         */
-       public Scope (Symbol owner = null) {
+       public Scope (Symbol? owner = null) {
                this.owner = owner;
        }
 
index 791a722..a8a7aea 100644 (file)
@@ -533,6 +533,16 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
        public override void visit_formal_parameter (FormalParameter p) {
                p.accept_children (this);
 
+               if (p.default_expression != null) {
+                       if (p.default_expression is NullLiteral
+                           && !p.type_reference.nullable
+                           && !p.type_reference.is_out) {
+                               p.error = true;
+                               Report.error (p.source_reference, "`null' incompatible with parameter type `%s`".printf (p.type_reference.to_string ()));
+                               return;
+                       }
+               }
+
                if (!p.ellipsis) {
                        if (!p.is_internal_symbol ()) {
                                current_source_file.add_type_dependency (p.type_reference, SourceFileDependencyType.HEADER_SHALLOW);
index fe2aa2b..5234773 100644 (file)
@@ -1209,7 +1209,7 @@ namespace GLib {
        }
        
        public class Thread {
-               public static void init (ThreadFunctions vtable = null);
+               public static void init (ThreadFunctions? vtable = null);
                public static bool supported ();
                public static weak Thread create (ThreadFunc func, bool joinable) throws ThreadError;
                public static weak Thread create_full (ThreadFunc func, ulong stack_size, bool joinable, bool bound, ThreadPriority priority) throws ThreadError;
@@ -1502,7 +1502,7 @@ namespace GLib {
                public static string to_utf8 (string opsysstring, out ulong bytes_read, out ulong bytes_written) throws ConvertError;
                public static string from_utf8 (string utf8string, long len, out ulong bytes_read, out ulong bytes_written) throws ConvertError;
                public static string from_uri (string uri, out string hostname = null) throws ConvertError;
-               public static string to_uri (string filename, string hostname = null) throws ConvertError;
+               public static string to_uri (string filename, string? hostname = null) throws ConvertError;
                public static string display_name (string filename);
                public static string display_basename (string filename);
        }
index a066cc5..be9bffa 100644 (file)
@@ -49,7 +49,7 @@ class Vala.VAPICheck : Object {
                 }
        }
 
-       private void add_symbol (string name, string separator = null) {
+       private void add_symbol (string name, string? separator = null) {
 
                if (null != separator) {
                        string fullname = get_scope () + separator + name;