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
/* 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
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
*/
public CCodeStatement body { get; set; }
- public CCodeWhileStatement (CCodeExpression cond, CCodeStatement stmt = null) {
+ public CCodeWhileStatement (CCodeExpression cond, CCodeStatement? stmt = null) {
condition = cond;
body = stmt;
}
private Collection<G> _collection;
- public ReadOnlyCollection (Collection<G> collection = null) {
+ public ReadOnlyCollection (Collection<G>? collection = null) {
this.collection = collection;
}
private List<G> _list;
- public ReadOnlyList (List<G> list = null) {
+ public ReadOnlyList (List<G>? list = null) {
this.list = list;
}
private Map<K,V> _map;
- public ReadOnlyMap (Map<K,V> map = null) {
+ public ReadOnlyMap (Map<K,V>? map = null) {
this.map = map;
}
private Set<G> _set;
- public ReadOnlySet (Set<G> set = null) {
+ public ReadOnlySet (Set<G>? set = null) {
this.set = set;
}
*
* @return newly created scope
*/
- public Scope (Symbol owner = null) {
+ public Scope (Symbol? owner = null) {
this.owner = owner;
}
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);
}
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;
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);
}
}
}
- 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;