Commit 9a47bfea authored by Jürg Billeter's avatar Jürg Billeter Committed by Jürg Billeter

report error when using null literal as default expression of non-null

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
parent 27afedc0
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,
......
/* 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;
}
......
/* 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;
}
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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);
......
......@@ -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);
}
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment