From: Juerg Billeter Date: Mon, 14 Apr 2008 19:07:37 +0000 (+0000) Subject: report warning when using null literal as return expression of method X-Git-Tag: VALA_0_3_1~74 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=89179ce042596bc60ec569a65cb9295324ff22a5;p=platform%2Fupstream%2Fvala.git report warning when using null literal as return expression of method 2008-04-14 Juerg Billeter * vala/valasemanticanalyzer.vala: report warning when using null literal as return expression of method returning non-null value * */*.vala: fix warnings svn path=/trunk/; revision=1228 --- diff --git a/ChangeLog b/ChangeLog index a1231d0..28dc4a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-04-14 Jürg Billeter + + * vala/valasemanticanalyzer.vala: report warning when using null + literal as return expression of method returning non-null value + + * */*.vala: fix warnings + 2008-04-14 Marc-Andre Lureau * vapi/dbus-glib-1.vapi, vapi/enchant.vapi, vapi/libxml-2.0.vapi, diff --git a/gee/arraylist.vala b/gee/arraylist.vala index c0a42e6..97ce929 100644 --- a/gee/arraylist.vala +++ b/gee/arraylist.vala @@ -68,7 +68,7 @@ public class Gee.ArrayList : Object, Iterable, Collection, List { return -1; } - public G get (int index) { + public G? get (int index) { assert (index >= 0 && index < _size); return _items[index]; @@ -178,7 +178,7 @@ public class Gee.ArrayList : Object, Iterable, Collection, List { return (_index < _list._size); } - public G get () { + public G? get () { assert (_stamp == _list._stamp); if (_index < 0 || _index >= _list._size) { diff --git a/gee/hashmap.vala b/gee/hashmap.vala index c4847ea..9269c75 100644 --- a/gee/hashmap.vala +++ b/gee/hashmap.vala @@ -91,7 +91,7 @@ public class Gee.HashMap : Object, Map { return (*node != null); } - public V get (K key) { + public V? get (K key) { Node* node = (*lookup_node (key)); if (node != null) { return node->value; @@ -251,7 +251,7 @@ public class Gee.HashMap : Object, Map { return (_node != null); } - public K get () { + public K? get () { assert (_stamp == _map._stamp); assert (_node != null); return _node.key; @@ -334,7 +334,7 @@ public class Gee.HashMap : Object, Map { return (_node != null); } - public V get () { + public V? get () { assert (_stamp == _map._stamp); assert (_node != null); return _node.value; diff --git a/gee/hashset.vala b/gee/hashset.vala index aed8cad..96e85f4 100644 --- a/gee/hashset.vala +++ b/gee/hashset.vala @@ -193,7 +193,7 @@ public class Gee.HashSet : Object, Iterable, Collection, Set { return (_node != null); } - public G get () { + public G? get () { assert (_stamp == _set._stamp); assert (_node != null); return _node.key; diff --git a/gee/iterator.vala b/gee/iterator.vala index d6fa947..6642a90 100644 --- a/gee/iterator.vala +++ b/gee/iterator.vala @@ -1,6 +1,6 @@ /* iterator.vala * - * Copyright (C) 2007 Jürg Billeter + * Copyright (C) 2007-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 @@ -37,6 +37,6 @@ public interface Gee.Iterator : GLib.Object { * * @return the current element in the iteration */ - public abstract G get (); + public abstract G? get (); } diff --git a/gee/list.vala b/gee/list.vala index 52e864a..d034a91 100644 --- a/gee/list.vala +++ b/gee/list.vala @@ -31,7 +31,7 @@ public interface Gee.List : Collection { * * @return the item at the specified index in the list */ - public abstract G get (int index); + public abstract G? get (int index); /** * Sets the item at the specified index in this list. diff --git a/gee/map.vala b/gee/map.vala index 9c98c8c..78858ce 100644 --- a/gee/map.vala +++ b/gee/map.vala @@ -60,7 +60,7 @@ public interface Gee.Map : GLib.Object { * @return the value associated with the key, or null if the key * couldn't be found */ - public abstract V get (K key); + public abstract V? get (K key); /** * Inserts a new key and value into this map. diff --git a/gee/readonlycollection.vala b/gee/readonlycollection.vala index e0ec563..3a4ac77 100644 --- a/gee/readonlycollection.vala +++ b/gee/readonlycollection.vala @@ -77,7 +77,7 @@ public class Gee.ReadOnlyCollection : Object, Iterable, Collection { return false; } - public G get () { + public G? get () { return null; } } diff --git a/gee/readonlylist.vala b/gee/readonlylist.vala index 2720521..1ea988d 100644 --- a/gee/readonlylist.vala +++ b/gee/readonlylist.vala @@ -84,7 +84,7 @@ public class Gee.ReadOnlyList : Object, Iterable, Collection, List { assert_not_reached (); } - public G get (int index) { + public G? get (int index) { if (_list == null) { return null; } @@ -105,7 +105,7 @@ public class Gee.ReadOnlyList : Object, Iterable, Collection, List { return false; } - public G get () { + public G? get () { return null; } } diff --git a/gee/readonlymap.vala b/gee/readonlymap.vala index b891189..e629527 100644 --- a/gee/readonlymap.vala +++ b/gee/readonlymap.vala @@ -64,7 +64,7 @@ public class Gee.ReadOnlyMap : Object, Map { return _map.contains (key); } - public V get (K key) { + public V? get (K key) { if (_map == null) { return null; } diff --git a/gee/readonlyset.vala b/gee/readonlyset.vala index 0439c8c..15bcd52 100644 --- a/gee/readonlyset.vala +++ b/gee/readonlyset.vala @@ -77,7 +77,7 @@ public class Gee.ReadOnlySet : Object, Iterable, Collection, Set { return false; } - public G get () { + public G? get () { return null; } } diff --git a/gen-project/valaprojectgenerator.vala b/gen-project/valaprojectgenerator.vala index c1008ed..b770990 100644 --- a/gen-project/valaprojectgenerator.vala +++ b/gen-project/valaprojectgenerator.vala @@ -594,7 +594,7 @@ class Vala.ProjectGenerator : Dialog { FileUtils.set_contents (project_path + "/MAINTAINERS", s, -1); } - private string get_automake_path () { + private string? get_automake_path () { var automake_paths = new string[] { "/usr/share/automake", "/usr/share/automake-1.10", "/usr/share/automake-1.9" }; diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index ff0cc00..b52f9e0 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -1198,7 +1198,7 @@ public class Vala.CCodeGenerator : CodeGenerator { } } - private CCodeExpression get_dup_func_expression (DataType type, SourceReference? source_reference) { + private CCodeExpression? get_dup_func_expression (DataType type, SourceReference? source_reference) { if (type.data_type != null) { string dup_function; if (type.data_type.is_reference_counting ()) { @@ -1226,7 +1226,7 @@ public class Vala.CCodeGenerator : CodeGenerator { } } - private CCodeExpression get_destroy_func_expression (DataType type) { + private CCodeExpression? get_destroy_func_expression (DataType type) { if (type.data_type != null) { string unref_function; if (type.data_type.is_reference_counting ()) { @@ -2665,7 +2665,7 @@ public class Vala.CCodeGenerator : CodeGenerator { visit_expression (expr); } - private MemberAccess find_property_access (Expression expr) { + private MemberAccess? find_property_access (Expression expr) { if (expr is ParenthesizedExpression) { var pe = (ParenthesizedExpression) expr; return find_property_access (pe.inner); @@ -2683,7 +2683,7 @@ public class Vala.CCodeGenerator : CodeGenerator { return null; } - private CCodeExpression get_ref_expression (Expression expr) { + private CCodeExpression? get_ref_expression (Expression expr) { /* (temp = expr, temp == NULL ? NULL : ref (temp)) * * can be simplified to @@ -3548,287 +3548,287 @@ public class Vala.CCodeGenerator : CodeGenerator { return type; } - public override CodeBinding create_namespace_binding (Namespace node) { + public override CodeBinding? create_namespace_binding (Namespace node) { return null; } - public override CodeBinding create_class_binding (Class node) { + public override CodeBinding? create_class_binding (Class node) { return null; } - public override CodeBinding create_struct_binding (Struct node) { + public override CodeBinding? create_struct_binding (Struct node) { return null; } - public override CodeBinding create_interface_binding (Interface node) { + public override CodeBinding? create_interface_binding (Interface node) { return null; } - public override CodeBinding create_enum_binding (Enum node) { + public override CodeBinding? create_enum_binding (Enum node) { return null; } - public override CodeBinding create_enum_value_binding (EnumValue node) { + public override CodeBinding? create_enum_value_binding (EnumValue node) { return null; } - public override CodeBinding create_error_domain_binding (ErrorDomain node) { + public override CodeBinding? create_error_domain_binding (ErrorDomain node) { return null; } - public override CodeBinding create_error_code_binding (ErrorCode node) { + public override CodeBinding? create_error_code_binding (ErrorCode node) { return null; } - public override CodeBinding create_delegate_binding (Delegate node) { + public override CodeBinding? create_delegate_binding (Delegate node) { return null; } - public override CodeBinding create_constant_binding (Constant node) { + public override CodeBinding? create_constant_binding (Constant node) { return null; } - public override CodeBinding create_field_binding (Field node) { + public override CodeBinding? create_field_binding (Field node) { return null; } - public override CodeBinding create_method_binding (Method node) { + public override CodeBinding? create_method_binding (Method node) { return new CCodeMethodBinding (this, node); } - public override CodeBinding create_creation_method_binding (CreationMethod node) { + public override CodeBinding? create_creation_method_binding (CreationMethod node) { return null; } - public override CodeBinding create_formal_parameter_binding (FormalParameter node) { + public override CodeBinding? create_formal_parameter_binding (FormalParameter node) { return null; } - public override CodeBinding create_property_binding (Property node) { + public override CodeBinding? create_property_binding (Property node) { return null; } - public override CodeBinding create_property_accessor_binding (PropertyAccessor node) { + public override CodeBinding? create_property_accessor_binding (PropertyAccessor node) { return null; } - public override CodeBinding create_signal_binding (Signal node) { + public override CodeBinding? create_signal_binding (Signal node) { return null; } - public override CodeBinding create_constructor_binding (Constructor node) { + public override CodeBinding? create_constructor_binding (Constructor node) { return null; } - public override CodeBinding create_destructor_binding (Destructor node) { + public override CodeBinding? create_destructor_binding (Destructor node) { return null; } - public override CodeBinding create_type_parameter_binding (TypeParameter node) { + public override CodeBinding? create_type_parameter_binding (TypeParameter node) { return null; } - public override CodeBinding create_block_binding (Block node) { + public override CodeBinding? create_block_binding (Block node) { return null; } - public override CodeBinding create_empty_statement_binding (EmptyStatement node) { + public override CodeBinding? create_empty_statement_binding (EmptyStatement node) { return null; } - public override CodeBinding create_declaration_statement_binding (DeclarationStatement node) { + public override CodeBinding? create_declaration_statement_binding (DeclarationStatement node) { return null; } - public override CodeBinding create_local_variable_declaration_binding (LocalVariableDeclaration node) { + public override CodeBinding? create_local_variable_declaration_binding (LocalVariableDeclaration node) { return null; } - public override CodeBinding create_variable_declarator_binding (VariableDeclarator node) { + public override CodeBinding? create_variable_declarator_binding (VariableDeclarator node) { return null; } - public override CodeBinding create_initializer_list_binding (InitializerList node) { + public override CodeBinding? create_initializer_list_binding (InitializerList node) { return null; } - public override CodeBinding create_expression_statement_binding (ExpressionStatement node) { + public override CodeBinding? create_expression_statement_binding (ExpressionStatement node) { return null; } - public override CodeBinding create_if_statement_binding (IfStatement node) { + public override CodeBinding? create_if_statement_binding (IfStatement node) { return null; } - public override CodeBinding create_switch_statement_binding (SwitchStatement node) { + public override CodeBinding? create_switch_statement_binding (SwitchStatement node) { return null; } - public override CodeBinding create_switch_section_binding (SwitchSection node) { + public override CodeBinding? create_switch_section_binding (SwitchSection node) { return null; } - public override CodeBinding create_switch_label_binding (SwitchLabel node) { + public override CodeBinding? create_switch_label_binding (SwitchLabel node) { return null; } - public override CodeBinding create_while_statement_binding (WhileStatement node) { + public override CodeBinding? create_while_statement_binding (WhileStatement node) { return null; } - public override CodeBinding create_do_statement_binding (DoStatement node) { + public override CodeBinding? create_do_statement_binding (DoStatement node) { return null; } - public override CodeBinding create_for_statement_binding (ForStatement node) { + public override CodeBinding? create_for_statement_binding (ForStatement node) { return null; } - public override CodeBinding create_foreach_statement_binding (ForeachStatement node) { + public override CodeBinding? create_foreach_statement_binding (ForeachStatement node) { return null; } - public override CodeBinding create_break_statement_binding (BreakStatement node) { + public override CodeBinding? create_break_statement_binding (BreakStatement node) { return null; } - public override CodeBinding create_continue_statement_binding (ContinueStatement node) { + public override CodeBinding? create_continue_statement_binding (ContinueStatement node) { return null; } - public override CodeBinding create_return_statement_binding (ReturnStatement node) { + public override CodeBinding? create_return_statement_binding (ReturnStatement node) { return null; } - public override CodeBinding create_throw_statement_binding (ThrowStatement node) { + public override CodeBinding? create_throw_statement_binding (ThrowStatement node) { return null; } - public override CodeBinding create_try_statement_binding (TryStatement node) { + public override CodeBinding? create_try_statement_binding (TryStatement node) { return null; } - public override CodeBinding create_catch_clause_binding (CatchClause node) { + public override CodeBinding? create_catch_clause_binding (CatchClause node) { return null; } - public override CodeBinding create_lock_statement_binding (LockStatement node) { + public override CodeBinding? create_lock_statement_binding (LockStatement node) { return null; } - public override CodeBinding create_delete_statement_binding (DeleteStatement node) { + public override CodeBinding? create_delete_statement_binding (DeleteStatement node) { return null; } - public override CodeBinding create_array_creation_expression_binding (ArrayCreationExpression node) { + public override CodeBinding? create_array_creation_expression_binding (ArrayCreationExpression node) { return new CCodeArrayCreationExpressionBinding (this, node); } - public override CodeBinding create_boolean_literal_binding (BooleanLiteral node) { + public override CodeBinding? create_boolean_literal_binding (BooleanLiteral node) { return null; } - public override CodeBinding create_character_literal_binding (CharacterLiteral node) { + public override CodeBinding? create_character_literal_binding (CharacterLiteral node) { return null; } - public override CodeBinding create_integer_literal_binding (IntegerLiteral node) { + public override CodeBinding? create_integer_literal_binding (IntegerLiteral node) { return null; } - public override CodeBinding create_real_literal_binding (RealLiteral node) { + public override CodeBinding? create_real_literal_binding (RealLiteral node) { return null; } - public override CodeBinding create_string_literal_binding (StringLiteral node) { + public override CodeBinding? create_string_literal_binding (StringLiteral node) { return null; } - public override CodeBinding create_null_literal_binding (NullLiteral node) { + public override CodeBinding? create_null_literal_binding (NullLiteral node) { return null; } - public override CodeBinding create_parenthesized_expression_binding (ParenthesizedExpression node) { + public override CodeBinding? create_parenthesized_expression_binding (ParenthesizedExpression node) { return null; } - public override CodeBinding create_member_access_binding (MemberAccess node) { + public override CodeBinding? create_member_access_binding (MemberAccess node) { return null; } - public override CodeBinding create_member_access_simple_binding (MemberAccess node) { + public override CodeBinding? create_member_access_simple_binding (MemberAccess node) { return null; } - public override CodeBinding create_invocation_expression_binding (InvocationExpression node) { + public override CodeBinding? create_invocation_expression_binding (InvocationExpression node) { return null; } - public override CodeBinding create_element_access_binding (ElementAccess node) { + public override CodeBinding? create_element_access_binding (ElementAccess node) { return new CCodeElementAccessBinding (this, node); } - public override CodeBinding create_base_access_binding (BaseAccess node) { + public override CodeBinding? create_base_access_binding (BaseAccess node) { return null; } - public override CodeBinding create_postfix_expression_binding (PostfixExpression node) { + public override CodeBinding? create_postfix_expression_binding (PostfixExpression node) { return null; } - public override CodeBinding create_object_creation_expression_binding (ObjectCreationExpression node) { + public override CodeBinding? create_object_creation_expression_binding (ObjectCreationExpression node) { return null; } - public override CodeBinding create_sizeof_expression_binding (SizeofExpression node) { + public override CodeBinding? create_sizeof_expression_binding (SizeofExpression node) { return null; } - public override CodeBinding create_typeof_expression_binding (TypeofExpression node) { + public override CodeBinding? create_typeof_expression_binding (TypeofExpression node) { return null; } - public override CodeBinding create_unary_expression_binding (UnaryExpression node) { + public override CodeBinding? create_unary_expression_binding (UnaryExpression node) { return null; } - public override CodeBinding create_cast_expression_binding (CastExpression node) { + public override CodeBinding? create_cast_expression_binding (CastExpression node) { return null; } - public override CodeBinding create_pointer_indirection_binding (PointerIndirection node) { + public override CodeBinding? create_pointer_indirection_binding (PointerIndirection node) { return null; } - public override CodeBinding create_addressof_expression_binding (AddressofExpression node) { + public override CodeBinding? create_addressof_expression_binding (AddressofExpression node) { return null; } - public override CodeBinding create_reference_transfer_expression_binding (ReferenceTransferExpression node) { + public override CodeBinding? create_reference_transfer_expression_binding (ReferenceTransferExpression node) { return null; } - public override CodeBinding create_binary_expression_binding (BinaryExpression node) { + public override CodeBinding? create_binary_expression_binding (BinaryExpression node) { return null; } - public override CodeBinding create_type_check_binding (TypeCheck node) { + public override CodeBinding? create_type_check_binding (TypeCheck node) { return null; } - public override CodeBinding create_conditional_expression_binding (ConditionalExpression node) { + public override CodeBinding? create_conditional_expression_binding (ConditionalExpression node) { return null; } - public override CodeBinding create_lambda_expression_binding (LambdaExpression node) { + public override CodeBinding? create_lambda_expression_binding (LambdaExpression node) { return null; } - public override CodeBinding create_lambda_expression_with_statement_body_binding (LambdaExpression node) { + public override CodeBinding? create_lambda_expression_with_statement_body_binding (LambdaExpression node) { return null; } - public override CodeBinding create_assignment_binding (Assignment node) { + public override CodeBinding? create_assignment_binding (Assignment node) { return new CCodeAssignmentBinding (this, node); } } diff --git a/gobject/valaccodegeneratormethod.vala b/gobject/valaccodegeneratormethod.vala index 8a1f825..2521264 100644 --- a/gobject/valaccodegeneratormethod.vala +++ b/gobject/valaccodegeneratormethod.vala @@ -649,7 +649,7 @@ public class Vala.CCodeGenerator { } } - private CCodeStatement create_type_check_statement (CodeNode method_node, DataType ret_type, Typesymbol t, bool non_null, string var_name) { + private CCodeStatement? create_type_check_statement (CodeNode method_node, DataType ret_type, Typesymbol t, bool non_null, string var_name) { var ccheck = new CCodeFunctionCall (); if ((t is Class && ((Class) t).is_subtype_of (gobject_type)) || (t is Interface && !((Interface) t).declaration_only)) { @@ -717,7 +717,7 @@ public class Vala.CCodeGenerator { return new CCodeExpressionStatement (cassert); } - private CCodeExpression default_value_for_type (DataType type, bool initializer_expression) { + private CCodeExpression? default_value_for_type (DataType type, bool initializer_expression) { if ((type.data_type != null && type.data_type.is_reference_type ()) || type is PointerType || type is ArrayType) { return new CCodeConstant ("NULL"); } else if (type.data_type != null && type.data_type.get_default_value () != null) { @@ -736,7 +736,7 @@ public class Vala.CCodeGenerator { return null; } - private Typesymbol find_parent_type (Symbol sym) { + private Typesymbol? find_parent_type (Symbol sym) { while (sym != null) { if (sym is Typesymbol) { return (Typesymbol) sym; diff --git a/gobject/valaccodegeneratorsignal.vala b/gobject/valaccodegeneratorsignal.vala index e674400..1627742 100644 --- a/gobject/valaccodegeneratorsignal.vala +++ b/gobject/valaccodegeneratorsignal.vala @@ -62,7 +62,7 @@ public class Vala.CCodeGenerator { return ret; } - private string get_value_type_name_from_type_reference (DataType t) { + private string? get_value_type_name_from_type_reference (DataType t) { if (t is PointerType || t.type_parameter != null || t.is_ref || t.is_out) { return "gpointer"; } else if (t is VoidType) { diff --git a/gobject/valadbusbindingprovider.vala b/gobject/valadbusbindingprovider.vala index 95bec0e..f4f235e 100644 --- a/gobject/valadbusbindingprovider.vala +++ b/gobject/valadbusbindingprovider.vala @@ -51,7 +51,7 @@ public class Vala.DBusBindingProvider : Object, BindingProvider { public DBusBindingProvider () { } - public Symbol get_binding (MemberAccess ma) { + public Symbol? get_binding (MemberAccess ma) { if (connection_type != null && ma.inner != null && ma.inner.static_type != null && ma.inner.static_type.data_type == connection_type) { var type_args = ma.get_type_arguments (); if (type_args.size != 1) { diff --git a/vala/valaarraytype.vala b/vala/valaarraytype.vala index 12ba61b..71e74d2 100644 --- a/vala/valaarraytype.vala +++ b/vala/valaarraytype.vala @@ -131,7 +131,7 @@ public class Vala.ArrayType : ReferenceType { return result; } - public override string get_cname (bool var_type, bool const_type) { + public override string? get_cname (bool var_type, bool const_type) { return element_type.get_cname () + "*"; } diff --git a/vala/valaattribute.vala b/vala/valaattribute.vala index 993bcec..cb0fd73 100644 --- a/vala/valaattribute.vala +++ b/vala/valaattribute.vala @@ -81,7 +81,7 @@ public class Vala.Attribute : CodeNode { * @param name argument name * @return string value */ - public string get_string (string name) { + public string? get_string (string name) { // FIXME: use hash table foreach (NamedArgument arg in args) { if (arg.name == name) { diff --git a/vala/valabindingprovider.vala b/vala/valabindingprovider.vala index 2babe3a..ea12a9f 100644 --- a/vala/valabindingprovider.vala +++ b/vala/valabindingprovider.vala @@ -1,6 +1,6 @@ /* valabindingprovider.vala * - * Copyright (C) 2007 Jürg Billeter + * Copyright (C) 2007-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 @@ -32,6 +32,6 @@ public interface Vala.BindingProvider : Object { * @param ma member access expression * @return resolved symbol or null if no binding can be provided */ - public abstract Symbol get_binding (MemberAccess ma); + public abstract Symbol? get_binding (MemberAccess ma); } diff --git a/vala/valaclass.vala b/vala/valaclass.vala index 16b36a1..6d4b68b 100644 --- a/vala/valaclass.vala +++ b/vala/valaclass.vala @@ -470,7 +470,7 @@ public class Vala.Class : Typesymbol { return lower_case_cprefix; } - public override string get_upper_case_cname (string? infix) { + public override string? get_upper_case_cname (string? infix) { return get_lower_case_cname (infix).up (); } @@ -544,7 +544,7 @@ public class Vala.Class : Typesymbol { return has_type_id || (base_class != null && base_class.get_has_type_id ()); } - public override string get_type_id () { + public override string? get_type_id () { if (type_id == null) { if (get_has_type_id ()) { type_id = get_upper_case_cname ("TYPE_"); @@ -560,7 +560,7 @@ public class Vala.Class : Typesymbol { this.type_id = type_id; } - public override string get_marshaller_type_name () { + public override string? get_marshaller_type_name () { if (marshaller_type_name == null) { if (base_class != null) { marshaller_type_name = base_class.get_marshaller_type_name (); @@ -572,7 +572,7 @@ public class Vala.Class : Typesymbol { return marshaller_type_name; } - public override string get_get_value_function () { + public override string? get_get_value_function () { if (get_value_function == null) { if (base_class != null) { get_value_function = base_class.get_get_value_function (); @@ -584,7 +584,7 @@ public class Vala.Class : Typesymbol { return get_value_function; } - public override string get_set_value_function () { + public override string? get_set_value_function () { if (set_value_function == null) { if (base_class != null) { set_value_function = base_class.get_set_value_function (); diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala index f554638..3f544ba 100644 --- a/vala/valacodecontext.vala +++ b/vala/valacodecontext.vala @@ -381,7 +381,7 @@ public class Vala.CodeContext : Object { } } - public string get_package_path (string pkg, [CCode (array_length_pos = 1.9)] string[] vapi_directories) { + public string? get_package_path (string pkg, [CCode (array_length_pos = 1.9)] string[] vapi_directories) { string basename = "%s.vapi".printf (pkg); string filename = null; diff --git a/vala/valacodegenerator.vala b/vala/valacodegenerator.vala index d34eaa5..dbe9a6b 100644 --- a/vala/valacodegenerator.vala +++ b/vala/valacodegenerator.vala @@ -34,287 +34,287 @@ public class Vala.CodeGenerator : CodeVisitor { public virtual void emit (CodeContext context) { } - public virtual CodeBinding create_namespace_binding (Namespace node) { + public virtual CodeBinding? create_namespace_binding (Namespace node) { return null; } - public virtual CodeBinding create_class_binding (Class node) { + public virtual CodeBinding? create_class_binding (Class node) { return null; } - public virtual CodeBinding create_struct_binding (Struct node) { + public virtual CodeBinding? create_struct_binding (Struct node) { return null; } - public virtual CodeBinding create_interface_binding (Interface node) { + public virtual CodeBinding? create_interface_binding (Interface node) { return null; } - public virtual CodeBinding create_enum_binding (Enum node) { + public virtual CodeBinding? create_enum_binding (Enum node) { return null; } - public virtual CodeBinding create_enum_value_binding (EnumValue node) { + public virtual CodeBinding? create_enum_value_binding (EnumValue node) { return null; } - public virtual CodeBinding create_error_domain_binding (ErrorDomain node) { + public virtual CodeBinding? create_error_domain_binding (ErrorDomain node) { return null; } - public virtual CodeBinding create_error_code_binding (ErrorCode node) { + public virtual CodeBinding? create_error_code_binding (ErrorCode node) { return null; } - public virtual CodeBinding create_delegate_binding (Delegate node) { + public virtual CodeBinding? create_delegate_binding (Delegate node) { return null; } - public virtual CodeBinding create_constant_binding (Constant node) { + public virtual CodeBinding? create_constant_binding (Constant node) { return null; } - public virtual CodeBinding create_field_binding (Field node) { + public virtual CodeBinding? create_field_binding (Field node) { return null; } - public virtual CodeBinding create_method_binding (Method node) { + public virtual CodeBinding? create_method_binding (Method node) { return null; } - public virtual CodeBinding create_creation_method_binding (CreationMethod node) { + public virtual CodeBinding? create_creation_method_binding (CreationMethod node) { return null; } - public virtual CodeBinding create_formal_parameter_binding (FormalParameter node) { + public virtual CodeBinding? create_formal_parameter_binding (FormalParameter node) { return null; } - public virtual CodeBinding create_property_binding (Property node) { + public virtual CodeBinding? create_property_binding (Property node) { return null; } - public virtual CodeBinding create_property_accessor_binding (PropertyAccessor node) { + public virtual CodeBinding? create_property_accessor_binding (PropertyAccessor node) { return null; } - public virtual CodeBinding create_signal_binding (Signal node) { + public virtual CodeBinding? create_signal_binding (Signal node) { return null; } - public virtual CodeBinding create_constructor_binding (Constructor node) { + public virtual CodeBinding? create_constructor_binding (Constructor node) { return null; } - public virtual CodeBinding create_destructor_binding (Destructor node) { + public virtual CodeBinding? create_destructor_binding (Destructor node) { return null; } - public virtual CodeBinding create_type_parameter_binding (TypeParameter node) { + public virtual CodeBinding? create_type_parameter_binding (TypeParameter node) { return null; } - public virtual CodeBinding create_block_binding (Block node) { + public virtual CodeBinding? create_block_binding (Block node) { return null; } - public virtual CodeBinding create_empty_statement_binding (EmptyStatement node) { + public virtual CodeBinding? create_empty_statement_binding (EmptyStatement node) { return null; } - public virtual CodeBinding create_declaration_statement_binding (DeclarationStatement node) { + public virtual CodeBinding? create_declaration_statement_binding (DeclarationStatement node) { return null; } - public virtual CodeBinding create_local_variable_declaration_binding (LocalVariableDeclaration node) { + public virtual CodeBinding? create_local_variable_declaration_binding (LocalVariableDeclaration node) { return null; } - public virtual CodeBinding create_variable_declarator_binding (VariableDeclarator node) { + public virtual CodeBinding? create_variable_declarator_binding (VariableDeclarator node) { return null; } - public virtual CodeBinding create_initializer_list_binding (InitializerList node) { + public virtual CodeBinding? create_initializer_list_binding (InitializerList node) { return null; } - public virtual CodeBinding create_expression_statement_binding (ExpressionStatement node) { + public virtual CodeBinding? create_expression_statement_binding (ExpressionStatement node) { return null; } - public virtual CodeBinding create_if_statement_binding (IfStatement node) { + public virtual CodeBinding? create_if_statement_binding (IfStatement node) { return null; } - public virtual CodeBinding create_switch_statement_binding (SwitchStatement node) { + public virtual CodeBinding? create_switch_statement_binding (SwitchStatement node) { return null; } - public virtual CodeBinding create_switch_section_binding (SwitchSection node) { + public virtual CodeBinding? create_switch_section_binding (SwitchSection node) { return null; } - public virtual CodeBinding create_switch_label_binding (SwitchLabel node) { + public virtual CodeBinding? create_switch_label_binding (SwitchLabel node) { return null; } - public virtual CodeBinding create_while_statement_binding (WhileStatement node) { + public virtual CodeBinding? create_while_statement_binding (WhileStatement node) { return null; } - public virtual CodeBinding create_do_statement_binding (DoStatement node) { + public virtual CodeBinding? create_do_statement_binding (DoStatement node) { return null; } - public virtual CodeBinding create_for_statement_binding (ForStatement node) { + public virtual CodeBinding? create_for_statement_binding (ForStatement node) { return null; } - public virtual CodeBinding create_foreach_statement_binding (ForeachStatement node) { + public virtual CodeBinding? create_foreach_statement_binding (ForeachStatement node) { return null; } - public virtual CodeBinding create_break_statement_binding (BreakStatement node) { + public virtual CodeBinding? create_break_statement_binding (BreakStatement node) { return null; } - public virtual CodeBinding create_continue_statement_binding (ContinueStatement node) { + public virtual CodeBinding? create_continue_statement_binding (ContinueStatement node) { return null; } - public virtual CodeBinding create_return_statement_binding (ReturnStatement node) { + public virtual CodeBinding? create_return_statement_binding (ReturnStatement node) { return null; } - public virtual CodeBinding create_throw_statement_binding (ThrowStatement node) { + public virtual CodeBinding? create_throw_statement_binding (ThrowStatement node) { return null; } - public virtual CodeBinding create_try_statement_binding (TryStatement node) { + public virtual CodeBinding? create_try_statement_binding (TryStatement node) { return null; } - public virtual CodeBinding create_catch_clause_binding (CatchClause node) { + public virtual CodeBinding? create_catch_clause_binding (CatchClause node) { return null; } - public virtual CodeBinding create_lock_statement_binding (LockStatement node) { + public virtual CodeBinding? create_lock_statement_binding (LockStatement node) { return null; } - public virtual CodeBinding create_delete_statement_binding (DeleteStatement node) { + public virtual CodeBinding? create_delete_statement_binding (DeleteStatement node) { return null; } - public virtual CodeBinding create_array_creation_expression_binding (ArrayCreationExpression node) { + public virtual CodeBinding? create_array_creation_expression_binding (ArrayCreationExpression node) { return null; } - public virtual CodeBinding create_boolean_literal_binding (BooleanLiteral node) { + public virtual CodeBinding? create_boolean_literal_binding (BooleanLiteral node) { return null; } - public virtual CodeBinding create_character_literal_binding (CharacterLiteral node) { + public virtual CodeBinding? create_character_literal_binding (CharacterLiteral node) { return null; } - public virtual CodeBinding create_integer_literal_binding (IntegerLiteral node) { + public virtual CodeBinding? create_integer_literal_binding (IntegerLiteral node) { return null; } - public virtual CodeBinding create_real_literal_binding (RealLiteral node) { + public virtual CodeBinding? create_real_literal_binding (RealLiteral node) { return null; } - public virtual CodeBinding create_string_literal_binding (StringLiteral node) { + public virtual CodeBinding? create_string_literal_binding (StringLiteral node) { return null; } - public virtual CodeBinding create_null_literal_binding (NullLiteral node) { + public virtual CodeBinding? create_null_literal_binding (NullLiteral node) { return null; } - public virtual CodeBinding create_parenthesized_expression_binding (ParenthesizedExpression node) { + public virtual CodeBinding? create_parenthesized_expression_binding (ParenthesizedExpression node) { return null; } - public virtual CodeBinding create_member_access_binding (MemberAccess node) { + public virtual CodeBinding? create_member_access_binding (MemberAccess node) { return null; } - public virtual CodeBinding create_member_access_simple_binding (MemberAccess node) { + public virtual CodeBinding? create_member_access_simple_binding (MemberAccess node) { return null; } - public virtual CodeBinding create_invocation_expression_binding (InvocationExpression node) { + public virtual CodeBinding? create_invocation_expression_binding (InvocationExpression node) { return null; } - public virtual CodeBinding create_element_access_binding (ElementAccess node) { + public virtual CodeBinding? create_element_access_binding (ElementAccess node) { return null; } - public virtual CodeBinding create_base_access_binding (BaseAccess node) { + public virtual CodeBinding? create_base_access_binding (BaseAccess node) { return null; } - public virtual CodeBinding create_postfix_expression_binding (PostfixExpression node) { + public virtual CodeBinding? create_postfix_expression_binding (PostfixExpression node) { return null; } - public virtual CodeBinding create_object_creation_expression_binding (ObjectCreationExpression node) { + public virtual CodeBinding? create_object_creation_expression_binding (ObjectCreationExpression node) { return null; } - public virtual CodeBinding create_sizeof_expression_binding (SizeofExpression node) { + public virtual CodeBinding? create_sizeof_expression_binding (SizeofExpression node) { return null; } - public virtual CodeBinding create_typeof_expression_binding (TypeofExpression node) { + public virtual CodeBinding? create_typeof_expression_binding (TypeofExpression node) { return null; } - public virtual CodeBinding create_unary_expression_binding (UnaryExpression node) { + public virtual CodeBinding? create_unary_expression_binding (UnaryExpression node) { return null; } - public virtual CodeBinding create_cast_expression_binding (CastExpression node) { + public virtual CodeBinding? create_cast_expression_binding (CastExpression node) { return null; } - public virtual CodeBinding create_pointer_indirection_binding (PointerIndirection node) { + public virtual CodeBinding? create_pointer_indirection_binding (PointerIndirection node) { return null; } - public virtual CodeBinding create_addressof_expression_binding (AddressofExpression node) { + public virtual CodeBinding? create_addressof_expression_binding (AddressofExpression node) { return null; } - public virtual CodeBinding create_reference_transfer_expression_binding (ReferenceTransferExpression node) { + public virtual CodeBinding? create_reference_transfer_expression_binding (ReferenceTransferExpression node) { return null; } - public virtual CodeBinding create_binary_expression_binding (BinaryExpression node) { + public virtual CodeBinding? create_binary_expression_binding (BinaryExpression node) { return null; } - public virtual CodeBinding create_type_check_binding (TypeCheck node) { + public virtual CodeBinding? create_type_check_binding (TypeCheck node) { return null; } - public virtual CodeBinding create_conditional_expression_binding (ConditionalExpression node) { + public virtual CodeBinding? create_conditional_expression_binding (ConditionalExpression node) { return null; } - public virtual CodeBinding create_lambda_expression_binding (LambdaExpression node) { + public virtual CodeBinding? create_lambda_expression_binding (LambdaExpression node) { return null; } - public virtual CodeBinding create_lambda_expression_with_statement_body_binding (LambdaExpression node) { + public virtual CodeBinding? create_lambda_expression_with_statement_body_binding (LambdaExpression node) { return null; } - public virtual CodeBinding create_assignment_binding (Assignment node) { + public virtual CodeBinding? create_assignment_binding (Assignment node) { return null; } } diff --git a/vala/valacodenode.vala b/vala/valacodenode.vala index 05ffa70..7218453 100644 --- a/vala/valacodenode.vala +++ b/vala/valacodenode.vala @@ -106,7 +106,7 @@ public abstract class Vala.CodeNode : Object { * @param name attribute name * @return attribute */ - public Attribute get_attribute (string name) { + public Attribute? get_attribute (string name) { // FIXME: use hash table foreach (Attribute a in attributes) { if (a.name == name) { diff --git a/vala/valadatatype.vala b/vala/valadatatype.vala index f760adf..3bc03c0 100644 --- a/vala/valadatatype.vala +++ b/vala/valadatatype.vala @@ -113,7 +113,7 @@ public abstract class Vala.DataType : CodeNode { * * @return the type string to be used in C code */ - public virtual string get_cname (bool var_type = false, bool const_type = false) { + public virtual string? get_cname (bool var_type = false, bool const_type = false) { if (data_type == null && type_parameter == null) { if (var_type) { return "gpointer"; @@ -396,7 +396,7 @@ public abstract class Vala.DataType : CodeNode { * * @return return type */ - public virtual DataType get_return_type () { + public virtual DataType? get_return_type () { return null; } @@ -405,7 +405,7 @@ public abstract class Vala.DataType : CodeNode { * * @return parameter list */ - public virtual Collection get_parameters () { + public virtual Collection? get_parameters () { return null; } @@ -439,7 +439,7 @@ public abstract class Vala.DataType : CodeNode { return null; } - public virtual Symbol get_pointer_member (string member_name) { + public virtual Symbol? get_pointer_member (string member_name) { return null; } diff --git a/vala/valadelegate.vala b/vala/valadelegate.vala index 5316fad..cc06308 100644 --- a/vala/valadelegate.vala +++ b/vala/valadelegate.vala @@ -260,19 +260,19 @@ public class Vala.Delegate : Typesymbol { return false; } - public override string get_type_id () { + public override string? get_type_id () { return "G_TYPE_POINTER"; } - public override string get_marshaller_type_name () { + public override string? get_marshaller_type_name () { return "POINTER"; } - public override string get_get_value_function () { + public override string? get_get_value_function () { return "g_value_get_pointer"; } - public override string get_set_value_function () { + public override string? get_set_value_function () { return "g_value_set_pointer"; } diff --git a/vala/valadelegatetype.vala b/vala/valadelegatetype.vala index 3702f3d..b0c908b 100644 --- a/vala/valadelegatetype.vala +++ b/vala/valadelegatetype.vala @@ -37,11 +37,11 @@ public class Vala.DelegateType : DataType { return true; } - public override DataType get_return_type () { + public override DataType? get_return_type () { return delegate_symbol.return_type; } - public override Collection get_parameters () { + public override Collection? get_parameters () { return delegate_symbol.get_parameters (); } @@ -53,7 +53,7 @@ public class Vala.DelegateType : DataType { return new DelegateType (delegate_symbol); } - public override string get_cname (bool var_type = false, bool const_type = false) { + public override string? get_cname (bool var_type, bool const_type) { return delegate_symbol.get_cname (const_type); } diff --git a/vala/valaenum.vala b/vala/valaenum.vala index 9230477..f924608 100644 --- a/vala/valaenum.vala +++ b/vala/valaenum.vala @@ -148,7 +148,7 @@ public class Vala.Enum : Typesymbol { return "%s%s%s".printf (parent_symbol.get_lower_case_cprefix (), infix, get_lower_case_csuffix ()); } - public override string get_upper_case_cname (string? infix = null) { + public override string? get_upper_case_cname (string? infix = null) { return get_lower_case_cname (infix).up (); } @@ -220,11 +220,11 @@ public class Vala.Enum : Typesymbol { } } - public void set_type_id (string type_id) { + public void set_type_id (string? type_id) { this.type_id = type_id; } - public override string get_type_id () { + public override string? get_type_id () { if (type_id == null) { if (has_type_id) { type_id = get_upper_case_cname ("TYPE_"); @@ -236,7 +236,7 @@ public class Vala.Enum : Typesymbol { return type_id; } - public override string get_marshaller_type_name () { + public override string? get_marshaller_type_name () { if (has_type_id) { if (is_flags) { return "FLAGS"; @@ -247,12 +247,12 @@ public class Vala.Enum : Typesymbol { if (is_flags) { return "UINT"; } else { - return "INT"; - } + return "INT"; + } } } - public override string get_get_value_function () { + public override string? get_get_value_function () { if (has_type_id) { if (is_flags) { return "g_value_get_flags"; @@ -268,7 +268,7 @@ public class Vala.Enum : Typesymbol { } } - public override string get_set_value_function () { + public override string? get_set_value_function () { if (has_type_id) { if (is_flags) { return "g_value_set_flags"; @@ -284,7 +284,7 @@ public class Vala.Enum : Typesymbol { } } - public override string get_default_value () { + public override string? get_default_value () { return "0"; } } diff --git a/vala/valaerrordomain.vala b/vala/valaerrordomain.vala index 63fa957..6b9b9cd 100644 --- a/vala/valaerrordomain.vala +++ b/vala/valaerrordomain.vala @@ -137,7 +137,7 @@ public class Vala.ErrorDomain : Typesymbol { return "%s%s%s".printf (parent_symbol.get_lower_case_cprefix (), infix, get_lower_case_csuffix ()); } - public override string get_upper_case_cname (string? infix) { + public override string? get_upper_case_cname (string? infix) { return get_lower_case_cname (null).up (); } @@ -201,19 +201,19 @@ public class Vala.ErrorDomain : Typesymbol { } } - public override string get_type_id () { + public override string? get_type_id () { return "G_TYPE_POINTER"; } - public override string get_marshaller_type_name () { + public override string? get_marshaller_type_name () { return "POINTER"; } - public override string get_get_value_function () { + public override string? get_get_value_function () { return "g_value_get_pointer"; } - public override string get_set_value_function () { + public override string? get_set_value_function () { return "g_value_set_pointer"; } } diff --git a/vala/valaerrortype.vala b/vala/valaerrortype.vala index 1414152..64540ab 100644 --- a/vala/valaerrortype.vala +++ b/vala/valaerrortype.vala @@ -72,7 +72,7 @@ public class Vala.ErrorType : ReferenceType { return new ErrorType (error_domain, source_reference); } - public override string get_cname (bool var_type = false, bool const_type = false) { + public override string? get_cname (bool var_type = false, bool const_type = false) { return "GError*"; } diff --git a/vala/valaexpressionstatement.vala b/vala/valaexpressionstatement.vala index 4422e78..79cad53 100644 --- a/vala/valaexpressionstatement.vala +++ b/vala/valaexpressionstatement.vala @@ -72,7 +72,7 @@ public class Vala.ExpressionStatement : CodeNode, Statement { * @return the property this statement sets, or null if it doesn't set * a property */ - public Property assigned_property () { + public Property? assigned_property () { if (expression is Assignment) { var assign = (Assignment) expression; if (assign.left is MemberAccess) { diff --git a/vala/valainterface.vala b/vala/valainterface.vala index 5b15add..328b375 100644 --- a/vala/valainterface.vala +++ b/vala/valainterface.vala @@ -313,7 +313,7 @@ public class Vala.Interface : Typesymbol { return "%s_".printf (get_lower_case_cname (null)); } - public override string get_upper_case_cname (string? infix) { + public override string? get_upper_case_cname (string? infix) { return get_lower_case_cname (infix).up (); } @@ -448,19 +448,19 @@ public class Vala.Interface : Typesymbol { this.type_cname = type_cname; } - public override string get_marshaller_type_name () { + public override string? get_marshaller_type_name () { return "OBJECT"; } - public override string get_get_value_function () { + public override string? get_get_value_function () { return "g_value_get_object"; } - public override string get_set_value_function () { + public override string? get_set_value_function () { return "g_value_set_object"; } - public override string get_type_id () { + public override string? get_type_id () { if (type_id == null) { type_id = get_upper_case_cname ("TYPE_"); } diff --git a/vala/valamethodtype.vala b/vala/valamethodtype.vala index 62fedf9..09f6bf8 100644 --- a/vala/valamethodtype.vala +++ b/vala/valamethodtype.vala @@ -37,11 +37,11 @@ public class Vala.MethodType : DataType { return true; } - public override DataType get_return_type () { + public override DataType? get_return_type () { return method_symbol.return_type; } - public override Collection get_parameters () { + public override Collection? get_parameters () { return method_symbol.get_parameters (); } diff --git a/vala/valaparser.vala b/vala/valaparser.vala index 32ba75a..d852044 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -347,7 +347,7 @@ public class Vala.Parser : CodeVisitor { bool is_weak = accept (TokenType.WEAK); var sym = parse_symbol_name (); - var type_arg_list = parse_type_argument_list (false); + Gee.List type_arg_list = parse_type_argument_list (false); int stars = 0; while (accept (TokenType.STAR)) { @@ -476,7 +476,7 @@ public class Vala.Parser : CodeVisitor { Expression parse_simple_name () throws ParseError { var begin = get_location (); string id = parse_identifier (); - var type_arg_list = parse_type_argument_list (true); + Gee.List type_arg_list = parse_type_argument_list (true); var expr = context.create_member_access (null, id, get_src (begin)); if (type_arg_list != null) { foreach (DataType type_arg in type_arg_list) { @@ -509,7 +509,7 @@ public class Vala.Parser : CodeVisitor { Expression parse_member_access (SourceLocation begin, Expression inner) throws ParseError { expect (TokenType.DOT); string id = parse_identifier (); - var type_arg_list = parse_type_argument_list (true); + Gee.List type_arg_list = parse_type_argument_list (true); var expr = context.create_member_access (inner, id, get_src (begin)); if (type_arg_list != null) { foreach (DataType type_arg in type_arg_list) { @@ -522,7 +522,7 @@ public class Vala.Parser : CodeVisitor { Expression parse_pointer_member_access (SourceLocation begin, Expression inner) throws ParseError { expect (TokenType.OP_PTR); string id = parse_identifier (); - var type_arg_list = parse_type_argument_list (true); + Gee.List type_arg_list = parse_type_argument_list (true); var expr = context.create_member_access_pointer (inner, id, get_src (begin)); if (type_arg_list != null) { foreach (DataType type_arg in type_arg_list) { @@ -1526,7 +1526,7 @@ public class Vala.Parser : CodeVisitor { return context.create_delete_statement (expr, get_src_com (begin)); } - Gee.List parse_attributes () throws ParseError { + Gee.List? parse_attributes () throws ParseError { if (current () != TokenType.OPEN_BRACKET) { return null; } @@ -2629,7 +2629,7 @@ public class Vala.Parser : CodeVisitor { } // try to parse type argument list - Gee.List parse_type_argument_list (bool maybe_expression) throws ParseError { + Gee.List? parse_type_argument_list (bool maybe_expression) throws ParseError { var begin = get_location (); if (accept (TokenType.OP_LT)) { var list = new ArrayList (); @@ -2684,7 +2684,7 @@ public class Vala.Parser : CodeVisitor { MemberAccess expr = null; do { string id = parse_identifier (); - var type_arg_list = parse_type_argument_list (false); + Gee.List type_arg_list = parse_type_argument_list (false); expr = context.create_member_access (expr, id, get_src (begin)); if (type_arg_list != null) { foreach (DataType type_arg in type_arg_list) { diff --git a/vala/valapointertype.vala b/vala/valapointertype.vala index 1c35c7e..b81f4be 100644 --- a/vala/valapointertype.vala +++ b/vala/valapointertype.vala @@ -40,7 +40,7 @@ public class Vala.PointerType : DataType { return base_type.to_string () + "*"; } - public override string get_cname (bool var_type = false, bool const_type = false) { + public override string? get_cname (bool var_type = false, bool const_type = false) { if (base_type.data_type != null && base_type.data_type.is_reference_type ()) { return base_type.get_cname (var_type, const_type); } else { @@ -70,7 +70,7 @@ public class Vala.PointerType : DataType { return false; } - public override Symbol get_pointer_member (string member_name) { + public override Symbol? get_pointer_member (string member_name) { Symbol base_symbol = base_type.data_type; if (base_symbol == null) { diff --git a/vala/valascanner.vala b/vala/valascanner.vala index f383c41..237567b 100644 --- a/vala/valascanner.vala +++ b/vala/valascanner.vala @@ -755,7 +755,7 @@ public class Vala.Scanner : Object { * * @return saved comment */ - public string pop_comment () { + public string? pop_comment () { if (_comment == null) { return null; } diff --git a/vala/valascope.vala b/vala/valascope.vala index 066ae0f..7dd6841 100644 --- a/vala/valascope.vala +++ b/vala/valascope.vala @@ -81,7 +81,7 @@ public class Vala.Scope : Object { * @param name name of the symbol to be returned * @return found symbol or null */ - public Symbol lookup (string name) { + public Symbol? lookup (string name) { if (symbol_table == null) { return null; } diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index a8a7aea..5921b31 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -1159,6 +1159,11 @@ public class Vala.SemanticAnalyzer : CodeVisitor { !current_return_type.transfers_ownership) { Report.warning (stmt.source_reference, "Local variable with strong reference used as return value and method return type hasn't been declared to transfer ownership"); } + + if (stmt.return_expression is NullLiteral + && !current_return_type.nullable) { + Report.warning (stmt.source_reference, "`null' incompatible with return type `%s`".printf (current_return_type.to_string ())); + } } public override void visit_throw_statement (ThrowStatement stmt) { @@ -1363,7 +1368,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { expr.static_type = new NullType (expr.source_reference); } - private DataType get_static_type_for_symbol (Symbol sym) { + private DataType? get_static_type_for_symbol (Symbol sym) { if (sym is Field) { var f = (Field) sym; return f.type_reference; @@ -1395,7 +1400,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { return null; } - public static Symbol symbol_lookup_inherited (Symbol sym, string name) { + public static Symbol? symbol_lookup_inherited (Symbol sym, string name) { var result = sym.scope.lookup (name); if (result != null) { return result; @@ -1905,7 +1910,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { return true; } - private static DataType get_instance_base_type (DataType instance_type, DataType base_type, CodeNode node_reference) { + private static DataType? get_instance_base_type (DataType instance_type, DataType base_type, CodeNode node_reference) { // construct a new type reference for the base type with correctly linked type arguments ReferenceType instance_base_type; if (base_type.data_type is Class) { @@ -1929,7 +1934,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { return instance_base_type; } - public static DataType get_actual_type (DataType derived_instance_type, Symbol generic_member, DataType generic_type, CodeNode node_reference) { + public static DataType? get_actual_type (DataType derived_instance_type, Symbol generic_member, DataType generic_type, CodeNode node_reference) { DataType instance_type = derived_instance_type; while (instance_type is PointerType) { @@ -2460,7 +2465,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { } } - private MemberAccess find_member_access (Expression expr) { + private MemberAccess? find_member_access (Expression expr) { if (expr is ParenthesizedExpression) { var pe = (ParenthesizedExpression) expr; return find_member_access (pe.inner); @@ -2551,7 +2556,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { expr.static_type.takes_ownership = false; } - private DataType get_arithmetic_result_type (DataType left_type, DataType right_type) { + private DataType? get_arithmetic_result_type (DataType left_type, DataType right_type) { if (!(left_type.data_type is Struct) || !(right_type.data_type is Struct)) { // at least one operand not struct return null; @@ -2755,7 +2760,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { return result; } - private Method find_current_method () { + private Method? find_current_method () { var sym = current_symbol; while (sym != null) { if (sym is Method) { diff --git a/vala/valasignaltype.vala b/vala/valasignaltype.vala index 727ff87..fd53530 100644 --- a/vala/valasignaltype.vala +++ b/vala/valasignaltype.vala @@ -37,11 +37,11 @@ public class Vala.SignalType : DataType { return true; } - public override DataType get_return_type () { + public override DataType? get_return_type () { return signal_symbol.return_type; } - public override Collection get_parameters () { + public override Collection? get_parameters () { return signal_symbol.get_parameters (); } diff --git a/vala/valasourcefile.vala b/vala/valasourcefile.vala index cc0e5ec..e04cf24 100644 --- a/vala/valasourcefile.vala +++ b/vala/valasourcefile.vala @@ -377,7 +377,7 @@ public class Vala.SourceFile : Object { * @param lineno 1-based line number * @return the specified source line */ - public string get_source_line (int lineno) { + public string? get_source_line (int lineno) { if (source_array == null) { read_source_file (); } diff --git a/vala/valastringliteral.vala b/vala/valastringliteral.vala index f3fe9ea..3ffc577 100644 --- a/vala/valastringliteral.vala +++ b/vala/valastringliteral.vala @@ -48,7 +48,7 @@ public class Vala.StringLiteral : Literal { * * @return the unescaped string */ - public string eval () { + public string? eval () { if (value == null) { return null; } diff --git a/vala/valastruct.vala b/vala/valastruct.vala index 0830bee..4692058 100644 --- a/vala/valastruct.vala +++ b/vala/valastruct.vala @@ -220,7 +220,7 @@ public class Vala.Struct : Typesymbol { return "%s%s%s".printf (parent_symbol.get_lower_case_cprefix (), infix, get_lower_case_csuffix ()); } - public override string get_upper_case_cname (string? infix) { + public override string? get_upper_case_cname (string? infix) { return get_lower_case_cname (infix).up (); } @@ -315,7 +315,7 @@ public class Vala.Struct : Typesymbol { } } - public override string get_type_id () { + public override string? get_type_id () { if (type_id == null) { if (simple_type) { Report.error (source_reference, "The type `%s` doesn't declare a type id".printf (get_full_name ())); @@ -326,11 +326,11 @@ public class Vala.Struct : Typesymbol { return type_id; } - public void set_type_id (string name) { + public void set_type_id (string? name) { this.type_id = name; } - public override string get_marshaller_type_name () { + public override string? get_marshaller_type_name () { if (marshaller_type_name == null) { if (simple_type) { Report.error (source_reference, "The type `%s` doesn't declare a marshaller type name".printf (get_full_name ())); @@ -341,11 +341,11 @@ public class Vala.Struct : Typesymbol { return marshaller_type_name; } - private void set_marshaller_type_name (string name) { + private void set_marshaller_type_name (string? name) { this.marshaller_type_name = name; } - public override string get_get_value_function () { + public override string? get_get_value_function () { if (get_value_function == null) { if (simple_type) { Report.error (source_reference, "The value type `%s` doesn't declare a GValue get function".printf (get_full_name ())); @@ -358,7 +358,7 @@ public class Vala.Struct : Typesymbol { } } - public override string get_set_value_function () { + public override string? get_set_value_function () { if (set_value_function == null) { if (simple_type) { Report.error (source_reference, "The value type `%s` doesn't declare a GValue set function".printf (get_full_name ())); @@ -371,15 +371,15 @@ public class Vala.Struct : Typesymbol { } } - private void set_get_value_function (string function) { + private void set_get_value_function (string? function) { get_value_function = function; } - private void set_set_value_function (string function) { + private void set_set_value_function (string? function) { set_value_function = function; } - public override string get_default_value () { + public override string? get_default_value () { if (default_value != null) { return default_value; } @@ -394,7 +394,7 @@ public class Vala.Struct : Typesymbol { return null; } - private void set_default_value (string value) { + private void set_default_value (string? value) { default_value = value; } diff --git a/vala/valasymbol.vala b/vala/valasymbol.vala index 2c2863e..c10e32b 100644 --- a/vala/valasymbol.vala +++ b/vala/valasymbol.vala @@ -30,7 +30,7 @@ public abstract class Vala.Symbol : CodeNode { /** * The parent of this symbol. */ - public weak Symbol parent_symbol { + public weak Symbol? parent_symbol { get { if (owner == null) { return null; diff --git a/vala/valatypesymbol.vala b/vala/valatypesymbol.vala index a7d3055..f1f342e 100644 --- a/vala/valatypesymbol.vala +++ b/vala/valatypesymbol.vala @@ -141,7 +141,7 @@ public abstract class Vala.Typesymbol : Symbol { * @return the name of the GType name in C code or null if this data * type is not registered with GType */ - public virtual string get_type_id () { + public virtual string? get_type_id () { return null; } @@ -150,21 +150,21 @@ public abstract class Vala.Typesymbol : Symbol { * * @return type name for marshallers */ - public virtual string get_marshaller_type_name () { + public virtual string? get_marshaller_type_name () { return null; } /** * Returns the cname of the GValue getter function, */ - public virtual string get_get_value_function () { + public virtual string? get_get_value_function () { return null; } /** * Returns the cname of the GValue setter function, */ - public virtual string get_set_value_function () { + public virtual string? get_set_value_function () { return null; } @@ -177,7 +177,7 @@ public abstract class Vala.Typesymbol : Symbol { * name or null * @return the upper case name to be used in C code */ - public virtual string get_upper_case_cname (string? infix = null) { + public virtual string? get_upper_case_cname (string? infix = null) { return null; } @@ -187,7 +187,7 @@ public abstract class Vala.Typesymbol : Symbol { * * @return the name of the default value */ - public virtual string get_default_value () { + public virtual string? get_default_value () { return null; } diff --git a/vala/valaunresolvedtype.vala b/vala/valaunresolvedtype.vala index 10f06b3..826fd22 100644 --- a/vala/valaunresolvedtype.vala +++ b/vala/valaunresolvedtype.vala @@ -72,7 +72,7 @@ public class Vala.UnresolvedType : DataType { * @param source reference to source code * @return newly created type reference */ - public static UnresolvedType new_from_expression (Expression expr) { + public static UnresolvedType? new_from_expression (Expression expr) { string ns = null; string type_name = null; if (expr is MemberAccess) { diff --git a/vala/valavaluetype.vala b/vala/valavaluetype.vala index 8f5e70a..f45b77f 100644 --- a/vala/valavaluetype.vala +++ b/vala/valavaluetype.vala @@ -53,7 +53,7 @@ public class Vala.ValueType : DataType { return result; } - public override string get_cname (bool var_type, bool const_type) { + public override string? get_cname (bool var_type, bool const_type) { string ptr = ""; if (is_ref || is_out) { ptr += "*"; diff --git a/vala/valavoidtype.vala b/vala/valavoidtype.vala index b759166..808cb05 100644 --- a/vala/valavoidtype.vala +++ b/vala/valavoidtype.vala @@ -37,7 +37,7 @@ public class Vala.VoidType : DataType { return "void"; } - public override string get_cname (bool var_type = false, bool const_type = false) { + public override string? get_cname (bool var_type = false, bool const_type = false) { return "void"; } diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index e21f6bd..14e39ab 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -188,7 +188,7 @@ public class Vala.GIdlParser : CodeVisitor { return const_name; } - private Namespace parse_module (IdlModule module) { + private Namespace? parse_module (IdlModule module) { Symbol sym = context.root.scope.lookup (module.name); Namespace ns; if (sym is Namespace) { @@ -280,7 +280,7 @@ public class Vala.GIdlParser : CodeVisitor { return ns; } - private Delegate parse_delegate (IdlNodeFunction f_node) { + private Delegate? parse_delegate (IdlNodeFunction f_node) { weak IdlNode node = (IdlNode) f_node; var cb = new Delegate (node.name, parse_param (f_node.result), current_source_reference); @@ -710,7 +710,7 @@ public class Vala.GIdlParser : CodeVisitor { } } - private Typesymbol parse_enum (IdlNodeEnum en_node) { + private Typesymbol? parse_enum (IdlNodeEnum en_node) { weak IdlNode node = (IdlNode) en_node; var en = new Enum (node.name, current_source_reference); @@ -978,7 +978,7 @@ public class Vala.GIdlParser : CodeVisitor { current_data_type = null; } - private UnresolvedType parse_type (IdlNodeType type_node) { + private UnresolvedType? parse_type (IdlNodeType type_node) { var type = new UnresolvedType (); if (type_node.tag == TypeTag.VOID) { if (type_node.is_pointer) { @@ -1184,7 +1184,7 @@ public class Vala.GIdlParser : CodeVisitor { return type; } - private Method create_method (string name, string symbol, IdlNodeParam? res, GLib.List? parameters, bool is_constructor, bool is_interface) { + private Method? create_method (string name, string symbol, IdlNodeParam? res, GLib.List? parameters, bool is_constructor, bool is_interface) { UnresolvedType return_type = null; if (res != null) { return_type = parse_param (res); @@ -1417,7 +1417,7 @@ public class Vala.GIdlParser : CodeVisitor { return false; } - private Method parse_function (IdlNodeFunction f, bool is_interface = false) { + private Method? parse_function (IdlNodeFunction f, bool is_interface = false) { weak IdlNode node = (IdlNode) f; if (f.deprecated) { @@ -1468,7 +1468,7 @@ public class Vala.GIdlParser : CodeVisitor { return str.str; } - private Property parse_property (IdlNodeProperty prop_node) { + private Property? parse_property (IdlNodeProperty prop_node) { weak IdlNode node = (IdlNode) prop_node; if (prop_node.deprecated) { @@ -1519,7 +1519,7 @@ public class Vala.GIdlParser : CodeVisitor { return prop; } - private Constant parse_constant (IdlNodeConstant const_node) { + private Constant? parse_constant (IdlNodeConstant const_node) { weak IdlNode node = (IdlNode) const_node; var type = parse_type (const_node.type); @@ -1533,7 +1533,7 @@ public class Vala.GIdlParser : CodeVisitor { return c; } - private Field parse_field (IdlNodeField field_node) { + private Field? parse_field (IdlNodeField field_node) { weak IdlNode node = (IdlNode) field_node; var type = parse_type (field_node.type); @@ -1586,7 +1586,7 @@ public class Vala.GIdlParser : CodeVisitor { } [NoArrayLength] - private string[] get_attributes (string codenode) { + private string[]? get_attributes (string codenode) { var attributes = codenode_attributes_map.get (codenode); if (attributes == null) { @@ -1619,7 +1619,7 @@ public class Vala.GIdlParser : CodeVisitor { return s.offset (1).ndup (s.size () - 2); } - private Signal parse_signal (IdlNodeSignal sig_node) { + private Signal? parse_signal (IdlNodeSignal sig_node) { weak IdlNode node = (IdlNode) sig_node; if (sig_node.deprecated || sig_node.result == null) { diff --git a/vapigen/valavapigen.vala b/vapigen/valavapigen.vala index 04502e0..8d38669 100644 --- a/vapigen/valavapigen.vala +++ b/vapigen/valavapigen.vala @@ -79,7 +79,7 @@ class Vala.VAPIGen : Object { return true; } - private static string[] get_packages_from_depsfile (string depsfile) { + private static string[]? get_packages_from_depsfile (string depsfile) { string contents; if (FileUtils.get_contents (depsfile, out contents)) { return contents.strip ().split ("\n");