vala r1386 - in trunk: . gen-project gobject vala
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r1386 - in trunk: . gen-project gobject vala
- Date: Tue, 13 May 2008 09:16:10 +0100 (BST)
Author: juergbi
Date: Tue May 13 08:16:09 2008
New Revision: 1386
URL: http://svn.gnome.org/viewvc/vala?rev=1386&view=rev
Log:
2008-05-13 Juerg Billeter <j bitron ch>
* vala/valaexpression.vala:
* vala/valamemorymanager.vala:
* vala/valanullchecker.vala:
* vala/valasemanticanalyzer.vala:
* gobject/valaccodearraycreationexpressionbinding.vala:
* gobject/valaccodeassignmentbinding.vala:
* gobject/valaccodeelementaccessbinding.vala:
* gobject/valaccodegenerator.vala:
* gobject/valaccodeinvocationexpressionbinding.vala:
* gobject/valaccodememberaccessbinding.vala:
Rename Expression.static_type to Expression.value_type
Modified:
trunk/ChangeLog
trunk/gen-project/valaprojectgenerator.vala
trunk/gobject/valaccodearraycreationexpressionbinding.vala
trunk/gobject/valaccodeassignmentbinding.vala
trunk/gobject/valaccodeelementaccessbinding.vala
trunk/gobject/valaccodegenerator.vala
trunk/gobject/valaccodeinvocationexpressionbinding.vala
trunk/gobject/valaccodememberaccessbinding.vala
trunk/vala/valaexpression.vala
trunk/vala/valamemorymanager.vala
trunk/vala/valanullchecker.vala
trunk/vala/valasemanticanalyzer.vala
Modified: trunk/gen-project/valaprojectgenerator.vala
==============================================================================
--- trunk/gen-project/valaprojectgenerator.vala (original)
+++ trunk/gen-project/valaprojectgenerator.vala Tue May 13 08:16:09 2008
@@ -376,7 +376,7 @@
TimeVal tv;
tv.get_current_time ();
- Date d = new Date ();
+ Date d = Date ();
d.set_time_val (tv);
s.append_printf ("/* %s\n", filename);
Modified: trunk/gobject/valaccodearraycreationexpressionbinding.vala
==============================================================================
--- trunk/gobject/valaccodearraycreationexpressionbinding.vala (original)
+++ trunk/gobject/valaccodearraycreationexpressionbinding.vala Tue May 13 08:16:09 2008
@@ -79,7 +79,7 @@
}
var ce = new CCodeCommaExpression ();
- var temp_var = codegen.get_temp_variable (expr.static_type, true, expr);
+ var temp_var = codegen.get_temp_variable (expr.value_type, true, expr);
var name_cnode = new CCodeIdentifier (temp_var.name);
int i = 0;
Modified: trunk/gobject/valaccodeassignmentbinding.vala
==============================================================================
--- trunk/gobject/valaccodeassignmentbinding.vala (original)
+++ trunk/gobject/valaccodeassignmentbinding.vala Tue May 13 08:16:09 2008
@@ -46,7 +46,7 @@
CCodeExpression cexpr = (CCodeExpression) assignment.right.ccodenode;
// ensure to pass the value correctly typed (especially important for varargs)
- cexpr = codegen.get_implicit_cast_expression (cexpr, assignment.right.static_type, prop.type_reference);
+ cexpr = codegen.get_implicit_cast_expression (cexpr, assignment.right.value_type, prop.type_reference);
if (!prop.no_accessor_method) {
if (prop.type_reference.is_real_struct_type ()) {
@@ -323,10 +323,10 @@
// custom element access
CCodeExpression rhs = (CCodeExpression) assignment.right.ccodenode;
- rhs = codegen.get_implicit_cast_expression (rhs, assignment.right.static_type, assignment.left.static_type);
+ rhs = codegen.get_implicit_cast_expression (rhs, assignment.right.value_type, assignment.left.value_type);
var expr = (ElementAccess) assignment.left;
- var container_type = expr.container.static_type.data_type;
+ var container_type = expr.container.value_type.data_type;
Collection<Expression> indices = expr.get_indices ();
Iterator<Expression> indices_it = indices.iterator ();
indices_it.next ();
@@ -350,14 +350,14 @@
var set_param = set_params_it.get ();
if (set_param.type_reference.type_parameter != null) {
- var index_type = SemanticAnalyzer.get_actual_type (expr.container.static_type, set_method, set_param.type_reference, assignment);
+ var index_type = SemanticAnalyzer.get_actual_type (expr.container.value_type, set_method, set_param.type_reference, assignment);
cindex = codegen.convert_to_generic_pointer (cindex, index_type);
}
var set_ccall = new CCodeFunctionCall (new CCodeIdentifier (set_method.get_cname ()));
set_ccall.add_argument (new CCodeCastExpression (ccontainer, collection_iface.get_cname () + "*"));
set_ccall.add_argument (cindex);
- set_ccall.add_argument (codegen.convert_to_generic_pointer (rhs, expr.static_type));
+ set_ccall.add_argument (codegen.convert_to_generic_pointer (rhs, expr.value_type));
codenode = set_ccall;
} else {
@@ -369,38 +369,38 @@
private void emit_simple_assignment () {
CCodeExpression rhs = (CCodeExpression) assignment.right.ccodenode;
- rhs = codegen.get_implicit_cast_expression (rhs, assignment.right.static_type, assignment.left.static_type);
+ rhs = codegen.get_implicit_cast_expression (rhs, assignment.right.value_type, assignment.left.value_type);
- bool unref_old = (assignment.left.static_type.takes_ownership);
+ bool unref_old = (assignment.left.value_type.takes_ownership);
bool array = false;
bool instance_delegate = false;
- if (assignment.left.static_type is ArrayType) {
+ if (assignment.left.value_type is ArrayType) {
array = !(codegen.get_array_length_cexpression (assignment.left, 1) is CCodeConstant);
- } else if (assignment.left.static_type is DelegateType) {
- var delegate_type = (DelegateType) assignment.left.static_type;
+ } else if (assignment.left.value_type is DelegateType) {
+ var delegate_type = (DelegateType) assignment.left.value_type;
instance_delegate = delegate_type.delegate_symbol.has_target;
}
if (unref_old || array || instance_delegate) {
var ccomma = new CCodeCommaExpression ();
- var temp_decl = codegen.get_temp_variable (assignment.left.static_type);
+ var temp_decl = codegen.get_temp_variable (assignment.left.value_type);
codegen.temp_vars.insert (0, temp_decl);
ccomma.append_expression (new CCodeAssignment (new CCodeIdentifier (temp_decl.name), rhs));
if (unref_old) {
/* unref old value */
- ccomma.append_expression (codegen.get_unref_expression ((CCodeExpression) assignment.left.ccodenode, assignment.left.static_type, assignment.left));
+ ccomma.append_expression (codegen.get_unref_expression ((CCodeExpression) assignment.left.ccodenode, assignment.left.value_type, assignment.left));
}
if (array) {
- var array_type = (ArrayType) assignment.left.static_type;
+ var array_type = (ArrayType) assignment.left.value_type;
for (int dim = 1; dim <= array_type.rank; dim++) {
var lhs_array_len = codegen.get_array_length_cexpression (assignment.left, dim);
var rhs_array_len = codegen.get_array_length_cexpression (assignment.right, dim);
ccomma.append_expression (new CCodeAssignment (lhs_array_len, rhs_array_len));
}
} else if (instance_delegate) {
- var delegate_type = (DelegateType) assignment.left.static_type;
+ var delegate_type = (DelegateType) assignment.left.value_type;
var lhs_delegate_target = codegen.get_delegate_target_cexpression (assignment.left);
var rhs_delegate_target = codegen.get_delegate_target_cexpression (assignment.right);
ccomma.append_expression (new CCodeAssignment (lhs_delegate_target, rhs_delegate_target));
@@ -463,8 +463,8 @@
} else if (assignment.left.symbol_reference is Signal) {
emit_signal_assignment ();
} else if (assignment.left is ElementAccess
- && !(((ElementAccess) assignment.left).container.static_type is ArrayType)
- && !(((ElementAccess) assignment.left).container.static_type is PointerType)) {
+ && !(((ElementAccess) assignment.left).container.value_type is ArrayType)
+ && !(((ElementAccess) assignment.left).container.value_type is PointerType)) {
emit_non_array_element_access ();
} else {
emit_simple_assignment ();
Modified: trunk/gobject/valaccodeelementaccessbinding.vala
==============================================================================
--- trunk/gobject/valaccodeelementaccessbinding.vala (original)
+++ trunk/gobject/valaccodeelementaccessbinding.vala Tue May 13 08:16:09 2008
@@ -41,7 +41,7 @@
Gee.List<Expression> indices = expr.get_indices ();
int rank = indices.size;
- var container_type = expr.container.static_type.data_type;
+ var container_type = expr.container.value_type.data_type;
var ccontainer = (CCodeExpression) expr.container.ccodenode;
var cindex = (CCodeExpression) indices[0].ccodenode;
@@ -78,7 +78,7 @@
var get_param = get_params_it.get ();
if (get_param.type_reference.type_parameter != null) {
- var index_type = SemanticAnalyzer.get_actual_type (expr.container.static_type, get_method, get_param.type_reference, expr);
+ var index_type = SemanticAnalyzer.get_actual_type (expr.container.value_type, get_method, get_param.type_reference, expr);
cindex = codegen.convert_to_generic_pointer (cindex, index_type);
}
@@ -86,7 +86,7 @@
get_ccall.add_argument (new CCodeCastExpression (ccontainer, collection_iface.get_cname () + "*"));
get_ccall.add_argument (cindex);
- codenode = codegen.convert_from_generic_pointer (get_ccall, expr.static_type);
+ codenode = codegen.convert_from_generic_pointer (get_ccall, expr.value_type);
} else {
// access to element in an array
for (int i = 1; i < rank; i++) {
Modified: trunk/gobject/valaccodegenerator.vala
==============================================================================
--- trunk/gobject/valaccodegenerator.vala (original)
+++ trunk/gobject/valaccodegenerator.vala Tue May 13 08:16:09 2008
@@ -597,7 +597,7 @@
if (f.initializer != null) {
var rhs = (CCodeExpression) f.initializer.ccodenode;
- rhs = get_implicit_cast_expression (rhs, f.initializer.static_type, f.type_reference);
+ rhs = get_implicit_cast_expression (rhs, f.initializer.value_type, f.type_reference);
instance_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (lhs, rhs)));
@@ -1142,7 +1142,7 @@
CCodeExpression rhs = null;
if (local.initializer != null && local.initializer.ccodenode != null) {
rhs = (CCodeExpression) local.initializer.ccodenode;
- rhs = get_implicit_cast_expression (rhs, local.initializer.static_type, local.variable_type);
+ rhs = get_implicit_cast_expression (rhs, local.initializer.value_type, local.variable_type);
if (local.variable_type is ArrayType) {
var array_type = (ArrayType) local.variable_type;
@@ -1226,7 +1226,7 @@
var clist = new CCodeInitializerList ();
foreach (Expression expr in list.get_initializers ()) {
- clist.append (get_implicit_cast_expression ((CCodeExpression) expr.ccodenode, expr.static_type, expr.expected_type));
+ clist.append (get_implicit_cast_expression ((CCodeExpression) expr.ccodenode, expr.value_type, expr.expected_type));
}
list.ccodenode = clist;
}
@@ -1463,7 +1463,7 @@
return;
}
- var full_expr_var = get_temp_variable (expr.static_type, true, expr);
+ var full_expr_var = get_temp_variable (expr.value_type, true, expr);
expr.temp_vars.add (full_expr_var);
var expr_list = new CCodeCommaExpression ();
@@ -1655,7 +1655,7 @@
public override void visit_switch_statement (SwitchStatement stmt) {
// we need a temporary variable to save the property value
- var temp_var = get_temp_variable (stmt.expression.static_type, true, stmt);
+ var temp_var = get_temp_variable (stmt.expression.value_type, true, stmt);
stmt.expression.temp_vars.insert (0, temp_var);
var ctemp = new CCodeIdentifier (temp_var.name);
@@ -1872,8 +1872,8 @@
cblock.add_statement (cfrag);
}
- if (stmt.collection.static_type is ArrayType) {
- var array_type = (ArrayType) stmt.collection.static_type;
+ if (stmt.collection.value_type is ArrayType) {
+ var array_type = (ArrayType) stmt.collection.value_type;
var array_len = get_array_length_cexpression (stmt.collection);
@@ -1893,7 +1893,7 @@
if (stmt.type_reference.takes_ownership) {
var ma = new MemberAccess.simple (stmt.variable_name);
- ma.static_type = stmt.type_reference;
+ ma.value_type = stmt.type_reference;
ma.ccodenode = element_expr;
element_expr = get_ref_expression (ma);
@@ -1937,7 +1937,7 @@
if (stmt.type_reference.takes_ownership) {
var ma = new MemberAccess.simple (stmt.variable_name);
- ma.static_type = stmt.type_reference;
+ ma.value_type = stmt.type_reference;
ma.ccodenode = element_expr;
element_expr = get_ref_expression (ma);
@@ -1979,7 +1979,7 @@
cfor.add_iterator (new CCodeAssignment (new CCodeIdentifier (it_name), new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, new CCodeIdentifier (it_name), new CCodeConstant ("1"))));
cblock.add_statement (cfor);
}
- } else if (stmt.collection.static_type.compatible (new ClassInstanceType (glist_type)) || stmt.collection.static_type.compatible (new ClassInstanceType (gslist_type))) {
+ } else if (stmt.collection.value_type.compatible (new ClassInstanceType (glist_type)) || stmt.collection.value_type.compatible (new ClassInstanceType (gslist_type))) {
var it_name = "%s_it".printf (stmt.variable_name);
var citdecl = new CCodeDeclaration (collection_type.get_cname ());
@@ -2005,7 +2005,7 @@
if (stmt.type_reference.takes_ownership) {
var ma = new MemberAccess.simple (stmt.variable_name);
- ma.static_type = stmt.type_reference;
+ ma.value_type = stmt.type_reference;
ma.ccodenode = element_expr;
element_expr = get_ref_expression (ma);
@@ -2031,7 +2031,7 @@
cfor.add_iterator (new CCodeAssignment (new CCodeIdentifier (it_name), new CCodeMemberAccess.pointer (new CCodeIdentifier (it_name), "next")));
cblock.add_statement (cfor);
- } else if (iterable_type != null && stmt.collection.static_type.compatible (new InterfaceInstanceType (iterable_type))) {
+ } else if (iterable_type != null && stmt.collection.value_type.compatible (new InterfaceInstanceType (iterable_type))) {
var it_name = "%s_it".printf (stmt.variable_name);
var citdecl = new CCodeDeclaration (iterator_type.get_cname () + "*");
@@ -2054,13 +2054,13 @@
Iterator<DataType> type_arg_it = it_method.return_type.get_type_arguments ().iterator ();
type_arg_it.next ();
- var it_type = SemanticAnalyzer.get_actual_type (stmt.collection.static_type, it_method, type_arg_it.get (), stmt);
+ var it_type = SemanticAnalyzer.get_actual_type (stmt.collection.value_type, it_method, type_arg_it.get (), stmt);
element_expr = get_implicit_cast_expression (element_expr, it_type, stmt.type_reference);
if (stmt.type_reference.takes_ownership && !it_type.takes_ownership) {
var ma = new MemberAccess.simple (stmt.variable_name);
- ma.static_type = stmt.type_reference;
+ ma.value_type = stmt.type_reference;
ma.ccodenode = element_expr;
element_expr = get_ref_expression (ma);
@@ -2196,7 +2196,7 @@
}
private void create_local_free_expr (Expression expr) {
- var return_expr_decl = get_temp_variable (expr.static_type, true, expr);
+ var return_expr_decl = get_temp_variable (expr.value_type, true, expr);
var ccomma = new CCodeCommaExpression ();
ccomma.append_expression (new CCodeAssignment (new CCodeIdentifier (return_expr_decl.name), (CCodeExpression) expr.ccodenode));
@@ -2255,7 +2255,7 @@
// return array length if appropriate
if (current_method != null && !current_method.no_array_length && current_return_type is ArrayType) {
- var return_expr_decl = get_temp_variable (stmt.return_expression.static_type, true, stmt);
+ var return_expr_decl = get_temp_variable (stmt.return_expression.value_type, true, stmt);
var ccomma = new CCodeCommaExpression ();
ccomma.append_expression (new CCodeAssignment (new CCodeIdentifier (return_expr_decl.name), (CCodeExpression) stmt.return_expression.ccodenode));
@@ -2276,7 +2276,7 @@
create_local_free_expr (stmt.return_expression);
- stmt.return_expression.ccodenode = get_implicit_cast_expression ((CCodeExpression) stmt.return_expression.ccodenode, stmt.return_expression.static_type, current_return_type);
+ stmt.return_expression.ccodenode = get_implicit_cast_expression ((CCodeExpression) stmt.return_expression.ccodenode, stmt.return_expression.value_type, current_return_type);
// Property getters of non simple structs shall return the struct value as out parameter,
// therefore replace any return statement with an assignment statement to the out formal
@@ -2429,7 +2429,7 @@
public override void visit_delete_statement (DeleteStatement stmt) {
stmt.accept_children (this);
- var pointer_type = (PointerType) stmt.expression.static_type;
+ var pointer_type = (PointerType) stmt.expression.value_type;
DataType type = pointer_type;
if (pointer_type.base_type.data_type != null && pointer_type.base_type.data_type.is_reference_type ()) {
type = pointer_type.base_type;
@@ -2507,7 +2507,7 @@
public CCodeExpression get_array_length_cexpression (Expression array_expr, int dim = -1) {
// dim == -1 => total size over all dimensions
if (dim == -1) {
- var array_type = array_expr.static_type as ArrayType;
+ var array_type = array_expr.value_type as ArrayType;
if (array_type != null && array_type.rank > 1) {
CCodeExpression cexpr = get_array_length_cexpression (array_expr, 1);
for (dim = 2; dim <= array_type.rank; dim++) {
@@ -2583,8 +2583,8 @@
} else {
pub_inst = (CCodeExpression) ma.inner.ccodenode;
- if (ma.inner.static_type != null) {
- base_type = ma.inner.static_type.data_type;
+ if (ma.inner.value_type != null) {
+ base_type = ma.inner.value_type.data_type;
}
}
@@ -2704,8 +2704,8 @@
} else {
pub_inst = (CCodeExpression) ma.inner.ccodenode;
- if (ma.inner.static_type != null) {
- base_type = ma.inner.static_type.data_type;
+ if (ma.inner.value_type != null) {
+ base_type = ma.inner.value_type.data_type;
}
}
@@ -2756,7 +2756,7 @@
}
public override void visit_base_access (BaseAccess expr) {
- expr.ccodenode = new InstanceCast (new CCodeIdentifier ("self"), expr.static_type.data_type);
+ expr.ccodenode = new InstanceCast (new CCodeIdentifier ("self"), expr.value_type.data_type);
}
public override void visit_postfix_expression (PostfixExpression expr) {
@@ -2818,7 +2818,7 @@
* if static type of expr is non-null
*/
- var dupexpr = get_dup_func_expression (expr.static_type, expr.source_reference);
+ var dupexpr = get_dup_func_expression (expr.value_type, expr.source_reference);
if (dupexpr == null) {
expr.error = true;
@@ -2833,23 +2833,23 @@
return ccall;
} else {
- var decl = get_temp_variable (expr.static_type, false, expr);
+ var decl = get_temp_variable (expr.value_type, false, expr);
temp_vars.insert (0, decl);
var ctemp = new CCodeIdentifier (decl.name);
var cisnull = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, ctemp, new CCodeConstant ("NULL"));
- if (expr.static_type.data_type == null) {
+ if (expr.value_type.data_type == null) {
if (!(current_type_symbol is Class)) {
return (CCodeExpression) expr.ccodenode;
}
// dup functions are optional for type parameters
- var cdupisnull = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, get_dup_func_expression (expr.static_type, expr.source_reference), new CCodeConstant ("NULL"));
+ var cdupisnull = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, get_dup_func_expression (expr.value_type, expr.source_reference), new CCodeConstant ("NULL"));
cisnull = new CCodeBinaryExpression (CCodeBinaryOperator.OR, cisnull, cdupisnull);
}
- if (expr.static_type.data_type != null) {
+ if (expr.value_type.data_type != null) {
ccall.add_argument (ctemp);
} else {
// cast from gconstpointer to gpointer as GBoxedCopyFunc expects gpointer
@@ -2860,7 +2860,7 @@
ccomma.append_expression (new CCodeAssignment (ctemp, (CCodeExpression) expr.ccodenode));
CCodeExpression cifnull;
- if (expr.static_type.data_type != null) {
+ if (expr.value_type.data_type != null) {
cifnull = new CCodeConstant ("NULL");
} else {
// the value might be non-null even when the dup function is null,
@@ -2877,9 +2877,9 @@
}
public void visit_expression (Expression expr) {
- if (expr.static_type != null &&
- expr.static_type.transfers_ownership &&
- expr.static_type.floating_reference) {
+ if (expr.value_type != null &&
+ expr.value_type.transfers_ownership &&
+ expr.value_type.floating_reference) {
/* constructor of GInitiallyUnowned subtype
* returns floating reference, sink it
*/
@@ -2890,7 +2890,7 @@
}
if (expr.ref_leaked) {
- var decl = get_temp_variable (expr.static_type, true, expr);
+ var decl = get_temp_variable (expr.value_type, true, expr);
temp_vars.insert (0, decl);
temp_ref_vars.insert (0, decl);
expr.ccodenode = new CCodeParenthesizedExpression (new CCodeAssignment (new CCodeIdentifier (get_variable_cname (decl.name)), (CCodeExpression) expr.ccodenode));
@@ -2981,7 +2981,7 @@
param = params_it.get ();
ellipsis = param.ellipsis;
if (!param.ellipsis) {
- cexpr = get_implicit_cast_expression (cexpr, arg.static_type, param.type_reference);
+ cexpr = get_implicit_cast_expression (cexpr, arg.value_type, param.type_reference);
// pass non-simple struct instances always by reference
if (param.type_reference.data_type is Struct && !((Struct) param.type_reference.data_type).is_simple_type ()) {
@@ -2994,7 +2994,7 @@
// (tmp = expr, &tmp)
var ccomma = new CCodeCommaExpression ();
- var temp_var = get_temp_variable (arg.static_type);
+ var temp_var = get_temp_variable (arg.value_type);
temp_vars.insert (0, temp_var);
ccomma.append_expression (new CCodeAssignment (new CCodeIdentifier (temp_var.name), cexpr));
ccomma.append_expression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (temp_var.name)));
@@ -3093,7 +3093,7 @@
ccomma.append_expression (new CCodeAssignment (lhs, (CCodeExpression) init.initializer.ccodenode));
} else if (init.symbol_reference is Property) {
var inst_ma = new MemberAccess.simple ("new");
- inst_ma.static_type = expr.type_reference;
+ inst_ma.value_type = expr.type_reference;
inst_ma.ccodenode = instance;
var ma = new MemberAccess (inst_ma, init.name);
ccomma.append_expression (get_property_set_call ((Property) init.symbol_reference, ma, (CCodeExpression) init.initializer.ccodenode));
@@ -3151,7 +3151,7 @@
// checked cast for strict subtypes of GTypeInstance
if (expr.is_silent_cast) {
var ccomma = new CCodeCommaExpression ();
- var temp_decl = get_temp_variable (expr.inner.static_type, true, expr);
+ var temp_decl = get_temp_variable (expr.inner.value_type, true, expr);
temp_vars.add (temp_decl);
@@ -3191,7 +3191,7 @@
public override void visit_reference_transfer_expression (ReferenceTransferExpression expr) {
/* (tmp = var, var = null, tmp) */
var ccomma = new CCodeCommaExpression ();
- var temp_decl = get_temp_variable (expr.static_type, true, expr);
+ var temp_decl = get_temp_variable (expr.value_type, true, expr);
temp_vars.insert (0, temp_decl);
var cvar = new CCodeIdentifier (temp_decl.name);
@@ -3253,13 +3253,13 @@
if (expr.operator == BinaryOperator.EQUALITY ||
expr.operator == BinaryOperator.INEQUALITY) {
- var left_type_as_struct = expr.left.static_type.data_type as Struct;
- var right_type_as_struct = expr.right.static_type.data_type as Struct;
+ var left_type_as_struct = expr.left.value_type.data_type as Struct;
+ var right_type_as_struct = expr.right.value_type.data_type as Struct;
- if (expr.left.static_type.data_type is Class && ((Class) expr.left.static_type.data_type).is_subtype_of (gobject_type) &&
- expr.right.static_type.data_type is Class && ((Class) expr.right.static_type.data_type).is_subtype_of (gobject_type)) {
- var left_cl = (Class) expr.left.static_type.data_type;
- var right_cl = (Class) expr.right.static_type.data_type;
+ if (expr.left.value_type.data_type is Class && ((Class) expr.left.value_type.data_type).is_subtype_of (gobject_type) &&
+ expr.right.value_type.data_type is Class && ((Class) expr.right.value_type.data_type).is_subtype_of (gobject_type)) {
+ var left_cl = (Class) expr.left.value_type.data_type;
+ var right_cl = (Class) expr.right.value_type.data_type;
if (left_cl != right_cl) {
if (left_cl.is_subtype_of (right_cl)) {
@@ -3268,17 +3268,17 @@
cright = new InstanceCast (cright, left_cl);
}
}
- } else if (left_type_as_struct != null && expr.right.static_type is NullType) {
+ } else if (left_type_as_struct != null && expr.right.value_type is NullType) {
cleft = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, cleft);
- } else if (right_type_as_struct != null && expr.left.static_type is NullType) {
+ } else if (right_type_as_struct != null && expr.left.value_type is NullType) {
cright = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, cright);
}
}
- if (!(expr.left.static_type is NullType)
- && expr.left.static_type.compatible (string_type)
- && !(expr.right.static_type is NullType)
- && expr.right.static_type.compatible (string_type)
+ if (!(expr.left.value_type is NullType)
+ && expr.left.value_type.compatible (string_type)
+ && !(expr.right.value_type is NullType)
+ && expr.right.value_type.compatible (string_type)
&& (expr.operator == BinaryOperator.EQUALITY
|| expr.operator == BinaryOperator.INEQUALITY
|| expr.operator == BinaryOperator.LESS_THAN
@@ -3594,7 +3594,7 @@
instance_expression_type = get_data_type_for_symbol (current_type_symbol);
} else {
instance = (CCodeExpression) ma.inner.ccodenode;
- instance_expression_type = ma.inner.static_type;
+ instance_expression_type = ma.inner.value_type;
}
var instance_target_type = get_data_type_for_symbol ((Typesymbol) base_property.parent_symbol);
@@ -3649,7 +3649,7 @@
}
var ccomma = new CCodeCommaExpression ();
- var temp_decl = get_temp_variable (e.static_type);
+ var temp_decl = get_temp_variable (e.value_type);
var ctemp = new CCodeIdentifier (temp_decl.name);
temp_vars.add (temp_decl);
ccomma.append_expression (new CCodeAssignment (ctemp, ce));
Modified: trunk/gobject/valaccodeinvocationexpressionbinding.vala
==============================================================================
--- trunk/gobject/valaccodeinvocationexpressionbinding.vala (original)
+++ trunk/gobject/valaccodeinvocationexpressionbinding.vala Tue May 13 08:16:09 2008
@@ -51,7 +51,7 @@
var ma = (MemberAccess) expr.call;
- var itype = expr.call.static_type;
+ var itype = expr.call.value_type;
params = itype.get_parameters ();
if (itype is MethodType) {
@@ -66,7 +66,7 @@
var carg_map = new HashMap<int,CCodeExpression> (direct_hash, direct_equal);
if (m is ArrayResizeMethod) {
- var array_type = (ArrayType) ma.inner.static_type;
+ var array_type = (ArrayType) ma.inner.value_type;
carg_map.set (codegen.get_param_pos (0), new CCodeIdentifier (array_type.element_type.get_cname ()));
} else if (m is ArrayMoveMethod) {
codegen.requires_array_move = true;
@@ -87,7 +87,7 @@
instance_expression_type = codegen.get_data_type_for_symbol (codegen.current_type_symbol);
} else {
instance = (CCodeExpression) ma.inner.ccodenode;
- instance_expression_type = ma.inner.static_type;
+ instance_expression_type = ma.inner.value_type;
}
if (instance_expression_type.data_type is Struct
@@ -111,7 +111,7 @@
// parent_symbol may be null for late bound methods
if (base_method.parent_symbol != null) {
- var instance_target_type = ma.static_type.copy ();
+ var instance_target_type = ma.value_type.copy ();
instance_target_type.data_type = (Typesymbol) base_method.parent_symbol;
instance = codegen.get_implicit_cast_expression (instance, instance_expression_type, instance_target_type);
}
@@ -126,7 +126,7 @@
}
if (m is ArrayMoveMethod) {
- var array_type = (ArrayType) ma.inner.static_type;
+ var array_type = (ArrayType) ma.inner.value_type;
var csizeof = new CCodeFunctionCall (new CCodeIdentifier ("sizeof"));
csizeof.add_argument (new CCodeIdentifier (array_type.element_type.get_cname ()));
carg_map.set (codegen.get_param_pos (0.1), csizeof);
@@ -137,17 +137,17 @@
var unary = arg as UnaryExpression;
if (unary != null && unary.operator == UnaryOperator.OUT) {
// out argument
- var param = new FormalParameter ("param%d".printf (param_nr), unary.inner.static_type);
+ var param = new FormalParameter ("param%d".printf (param_nr), unary.inner.value_type);
param.direction = ParameterDirection.OUT;
m.add_parameter (param);
} else if (unary != null && unary.operator == UnaryOperator.REF) {
// ref argument
- var param = new FormalParameter ("param%d".printf (param_nr), unary.inner.static_type);
+ var param = new FormalParameter ("param%d".printf (param_nr), unary.inner.value_type);
param.direction = ParameterDirection.REF;
m.add_parameter (param);
} else {
// in argument
- m.add_parameter (new FormalParameter ("param%d".printf (param_nr), arg.static_type));
+ m.add_parameter (new FormalParameter ("param%d".printf (param_nr), arg.value_type));
}
param_nr++;
}
@@ -195,11 +195,11 @@
}
if (param.direction == ParameterDirection.IN) {
// don't cast arguments passed by reference
- cexpr = codegen.get_implicit_cast_expression (cexpr, arg.static_type, param.type_reference);
+ cexpr = codegen.get_implicit_cast_expression (cexpr, arg.value_type, param.type_reference);
}
// pass non-simple struct instances always by reference
- if (!(arg.static_type is NullType) && param.type_reference.data_type is Struct && !((Struct) param.type_reference.data_type).is_simple_type ()) {
+ if (!(arg.value_type is NullType) && param.type_reference.data_type is Struct && !((Struct) param.type_reference.data_type).is_simple_type ()) {
// we already use a reference for arguments of ref and out parameters
if (param.direction == ParameterDirection.IN) {
if (cexpr is CCodeIdentifier) {
@@ -209,7 +209,7 @@
// (tmp = expr, &tmp)
var ccomma = new CCodeCommaExpression ();
- var temp_var = codegen.get_temp_variable (arg.static_type);
+ var temp_var = codegen.get_temp_variable (arg.value_type);
codegen.temp_vars.insert (0, temp_var);
ccomma.append_expression (new CCodeAssignment (new CCodeIdentifier (temp_var.name), cexpr));
ccomma.append_expression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (temp_var.name)));
@@ -227,7 +227,7 @@
var ccomma = new CCodeCommaExpression ();
- var temp_decl = codegen.get_temp_variable (arg.static_type);
+ var temp_decl = codegen.get_temp_variable (arg.value_type);
codegen.temp_vars.insert (0, temp_decl);
ccomma.append_expression (new CCodeAssignment (new CCodeIdentifier (temp_decl.name), cexpr));
@@ -239,13 +239,13 @@
}
// unref old value for non-null non-weak out arguments
- if (param.direction == ParameterDirection.OUT && param.type_reference.takes_ownership && !(arg.static_type is NullType)) {
+ if (param.direction == ParameterDirection.OUT && param.type_reference.takes_ownership && !(arg.value_type is NullType)) {
var unary = (UnaryExpression) arg;
// (ret_tmp = call (&tmp), free (var1), var1 = tmp, ret_tmp)
var ccomma = new CCodeCommaExpression ();
- var temp_var = codegen.get_temp_variable (unary.inner.static_type);
+ var temp_var = codegen.get_temp_variable (unary.inner.value_type);
codegen.temp_vars.insert (0, temp_var);
cexpr = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (temp_var.name));
@@ -260,7 +260,7 @@
}
// unref old value
- ccomma.append_expression (codegen.get_unref_expression ((CCodeExpression) unary.inner.ccodenode, arg.static_type, arg));
+ ccomma.append_expression (codegen.get_unref_expression ((CCodeExpression) unary.inner.ccodenode, arg.value_type, arg));
// assign new value
ccomma.append_expression (new CCodeAssignment ((CCodeExpression) unary.inner.ccodenode, new CCodeIdentifier (temp_var.name)));
@@ -387,8 +387,8 @@
expr.ccodenode = new CCodeAssignment (instance, ccall_expr);
} else {
/* cast pointer to actual type if this is a generic method return value */
- if (m != null && m.return_type.type_parameter != null && expr.static_type.data_type != null) {
- expr.ccodenode = codegen.convert_from_generic_pointer (ccall_expr, expr.static_type);
+ if (m != null && m.return_type.type_parameter != null && expr.value_type.data_type != null) {
+ expr.ccodenode = codegen.convert_from_generic_pointer (ccall_expr, expr.value_type);
} else {
expr.ccodenode = ccall_expr;
}
@@ -412,7 +412,7 @@
var clen = codegen.get_array_length_cexpression (ma.inner, 1);
var celems = (CCodeExpression) ma.inner.ccodenode;
- var array_type = (ArrayType) ma.inner.static_type;
+ var array_type = (ArrayType) ma.inner.value_type;
var csizeof = new CCodeIdentifier ("sizeof (%s)".printf (array_type.element_type.get_cname ()));
var cdelta = new CCodeParenthesizedExpression (new CCodeBinaryExpression (CCodeBinaryOperator.MINUS, temp_ref, clen));
var ccheck = new CCodeBinaryExpression (CCodeBinaryOperator.GREATER_THAN, temp_ref, clen);
Modified: trunk/gobject/valaccodememberaccessbinding.vala
==============================================================================
--- trunk/gobject/valaccodememberaccessbinding.vala (original)
+++ trunk/gobject/valaccodememberaccessbinding.vala Tue May 13 08:16:09 2008
@@ -59,7 +59,7 @@
if (expr.inner != null && !expr.inner.is_pure ()) {
// instance expression has side-effects
// store in temp. variable
- var temp_var = codegen.get_temp_variable (expr.inner.static_type);
+ var temp_var = codegen.get_temp_variable (expr.inner.value_type);
codegen.temp_vars.insert (0, temp_var);
var ctemp = new CCodeIdentifier (temp_var.name);
inst = new CCodeAssignment (ctemp, pub_inst);
@@ -94,7 +94,7 @@
} else {
inst = typed_inst;
}
- if (instance_target_type.data_type.is_reference_type () || (expr.inner != null && expr.inner.static_type is PointerType)) {
+ if (instance_target_type.data_type.is_reference_type () || (expr.inner != null && expr.inner.value_type is PointerType)) {
expr.ccodenode = new CCodeMemberAccess.pointer (inst, f.get_cname ());
} else {
expr.ccodenode = new CCodeMemberAccess (inst, f.get_cname ());
@@ -108,8 +108,8 @@
expr.ccodenode = new CCodeIdentifier (f.get_cname ());
}
- if (f.type_reference.type_parameter != null && expr.static_type.type_parameter == null) {
- expr.ccodenode = codegen.convert_from_generic_pointer ((CCodeExpression) expr.ccodenode, expr.static_type);
+ if (f.type_reference.type_parameter != null && expr.value_type.type_parameter == null) {
+ expr.ccodenode = codegen.convert_from_generic_pointer ((CCodeExpression) expr.ccodenode, expr.value_type);
}
} else if (expr.symbol_reference is Constant) {
var c = (Constant) expr.symbol_reference;
@@ -165,7 +165,7 @@
// we need a temporary variable to save the property value
- var temp_var = codegen.get_temp_variable (expr.static_type);
+ var temp_var = codegen.get_temp_variable (expr.value_type);
codegen.temp_vars.insert (0, temp_var);
var ctemp = new CCodeIdentifier (temp_var.name);
@@ -258,8 +258,8 @@
} else {
pub_inst = (CCodeExpression) expr.inner.ccodenode;
- if (expr.inner.static_type != null) {
- base_type = expr.inner.static_type;
+ if (expr.inner.value_type != null) {
+ base_type = expr.inner.value_type;
}
}
Modified: trunk/vala/valaexpression.vala
==============================================================================
--- trunk/vala/valaexpression.vala (original)
+++ trunk/vala/valaexpression.vala Tue May 13 08:16:09 2008
@@ -28,11 +28,11 @@
*/
public abstract class Vala.Expression : CodeNode {
/**
- * The static type of this expression.
+ * The static type of the value of this expression.
*
* The semantic analyzer computes this value.
*/
- public DataType static_type { get; set; }
+ public DataType value_type { get; set; }
/*
* The static type this expression is expected to have.
Modified: trunk/vala/valamemorymanager.vala
==============================================================================
--- trunk/vala/valamemorymanager.vala (original)
+++ trunk/vala/valamemorymanager.vala Tue May 13 08:16:09 2008
@@ -41,17 +41,17 @@
}
private void visit_possibly_leaked_expression (Expression expr) {
- if (expr.static_type != null
- && expr.static_type.transfers_ownership) {
+ if (expr.value_type != null
+ && expr.value_type.transfers_ownership) {
/* mark reference as leaked */
expr.ref_leaked = true;
}
}
private void visit_possibly_missing_copy_expression (Expression expr) {
- if (expr.static_type != null
- && !expr.static_type.transfers_ownership
- && !(expr.static_type is NullType)) {
+ if (expr.value_type != null
+ && !expr.value_type.transfers_ownership
+ && !(expr.value_type is NullType)) {
/* mark reference as missing */
expr.ref_missing = true;
}
@@ -215,7 +215,7 @@
public override void visit_array_creation_expression (ArrayCreationExpression e) {
if (e.initializer_list != null) {
foreach (Expression init in e.initializer_list.get_initializers ()) {
- if (init.static_type.is_reference_type_or_type_parameter ()) {
+ if (init.value_type.is_reference_type_or_type_parameter ()) {
visit_possibly_missing_copy_expression (init);
} else {
visit_possibly_leaked_expression (init);
@@ -237,7 +237,7 @@
public override void visit_invocation_expression (InvocationExpression expr) {
expr.accept_children (this);
- var mtype = expr.call.static_type;
+ var mtype = expr.call.value_type;
Collection<FormalParameter> params = mtype.get_parameters ();
Iterator<FormalParameter> params_it = params.iterator ();
@@ -250,7 +250,7 @@
if (is_ref && param.type_reference.type_parameter != null) {
if (expr.call is MemberAccess) {
var ma = (MemberAccess) expr.call;
- var param_type = SemanticAnalyzer.get_actual_type (ma.inner.static_type, ma.symbol_reference, param.type_reference, expr);
+ var param_type = SemanticAnalyzer.get_actual_type (ma.inner.value_type, ma.symbol_reference, param.type_reference, expr);
if (param_type != null) {
is_ref = param_type.takes_ownership;
}
@@ -323,8 +323,8 @@
if (a.left is PointerIndirection || a.left.symbol_reference is Signal) {
} else {
- if (!(a.left.static_type is PointerType)) {
- if (a.left.static_type.takes_ownership) {
+ if (!(a.left.value_type is PointerType)) {
+ if (a.left.value_type.takes_ownership) {
visit_possibly_missing_copy_expression (a.right);
} else {
visit_possibly_leaked_expression (a.right);
Modified: trunk/vala/valanullchecker.vala
==============================================================================
--- trunk/vala/valanullchecker.vala (original)
+++ trunk/vala/valanullchecker.vala Tue May 13 08:16:09 2008
@@ -41,18 +41,18 @@
void check_compatible (Expression expr, DataType target_type) {
if (!target_type.nullable) {
- if (expr.static_type is NullType) {
+ if (expr.value_type is NullType) {
Report.error (expr.source_reference, "`null' incompatible with `%s'".printf (target_type.to_string ()));
- } else if (expr.static_type.nullable) {
- Report.warning (expr.source_reference, "`%s' incompatible with `%s'".printf (expr.static_type.to_string (), target_type.to_string ()));
+ } else if (expr.value_type.nullable) {
+ Report.warning (expr.source_reference, "`%s' incompatible with `%s'".printf (expr.value_type.to_string (), target_type.to_string ()));
}
}
}
void check_non_null (Expression expr) {
- if (expr.static_type is NullType) {
+ if (expr.value_type is NullType) {
Report.error (expr.source_reference, "null dereference");
- } else if (expr.static_type.nullable) {
+ } else if (expr.value_type.nullable) {
Report.warning (expr.source_reference, "possible null dereference");
}
}
@@ -197,7 +197,7 @@
public override void visit_invocation_expression (InvocationExpression expr) {
expr.accept_children (this);
- var mtype = expr.call.static_type as MethodType;
+ var mtype = expr.call.value_type as MethodType;
var ma = expr.call as MemberAccess;
if (mtype != null && mtype.method_symbol.binding == MemberBinding.INSTANCE && ma != null) {
if (ma.inner == null) {
@@ -240,6 +240,6 @@
public override void visit_assignment (Assignment a) {
a.accept_children (this);
- check_compatible (a.right, a.left.static_type);
+ check_compatible (a.right, a.left.value_type);
}
}
Modified: trunk/vala/valasemanticanalyzer.vala
==============================================================================
--- trunk/vala/valasemanticanalyzer.vala (original)
+++ trunk/vala/valasemanticanalyzer.vala Tue May 13 08:16:09 2008
@@ -449,7 +449,7 @@
return;
}
- if (!precondition.static_type.compatible (bool_type)) {
+ if (!precondition.value_type.compatible (bool_type)) {
m.error = true;
Report.error (precondition.source_reference, "Precondition must be boolean");
return;
@@ -463,7 +463,7 @@
return;
}
- if (!postcondition.static_type.compatible (bool_type)) {
+ if (!postcondition.value_type.compatible (bool_type)) {
m.error = true;
Report.error (postcondition.source_reference, "Postcondition must be boolean");
return;
@@ -807,13 +807,13 @@
Report.error (local.source_reference, "var declaration not allowed without initializer");
return;
}
- if (local.initializer.static_type == null) {
+ if (local.initializer.value_type == null) {
local.error = true;
Report.error (local.source_reference, "var declaration not allowed with non-typed initializer");
return;
}
- local.variable_type = local.initializer.static_type.copy ();
+ local.variable_type = local.initializer.value_type.copy ();
local.variable_type.takes_ownership = (local.variable_type.data_type == null || local.variable_type.data_type.is_reference_type ());
local.variable_type.transfers_ownership = false;
@@ -823,7 +823,7 @@
}
if (local.initializer != null) {
- if (local.initializer.static_type == null) {
+ if (local.initializer.value_type == null) {
if (!(local.initializer is MemberAccess) && !(local.initializer is LambdaExpression)) {
local.error = true;
Report.error (local.source_reference, "expression type not allowed as initializer");
@@ -843,7 +843,7 @@
return;
}
- local.initializer.static_type = local.variable_type;
+ local.initializer.value_type = local.variable_type;
} else {
local.error = true;
Report.error (local.source_reference, "expression type not allowed as initializer");
@@ -851,13 +851,13 @@
}
}
- if (!local.initializer.static_type.compatible (local.variable_type)) {
+ if (!local.initializer.value_type.compatible (local.variable_type)) {
local.error = true;
- Report.error (local.source_reference, "Assignment: Cannot convert from `%s' to `%s'".printf (local.initializer.static_type.to_string (), local.variable_type.to_string ()));
+ Report.error (local.source_reference, "Assignment: Cannot convert from `%s' to `%s'".printf (local.initializer.value_type.to_string (), local.variable_type.to_string ()));
return;
}
- if (local.initializer.static_type.transfers_ownership) {
+ if (local.initializer.value_type.transfers_ownership) {
/* rhs transfers ownership of the expression */
if (!(local.variable_type is PointerType) && !local.variable_type.takes_ownership) {
/* lhs doesn't own the value */
@@ -927,7 +927,7 @@
bool error = false;
foreach (Expression e in list.get_initializers ()) {
- if (e.static_type == null) {
+ if (e.value_type == null) {
error = true;
continue;
}
@@ -935,16 +935,16 @@
var unary = e as UnaryExpression;
if (unary != null && (unary.operator == UnaryOperator.REF || unary.operator == UnaryOperator.OUT)) {
// TODO check type for ref and out expressions
- } else if (!e.static_type.compatible (e.expected_type)) {
+ } else if (!e.value_type.compatible (e.expected_type)) {
error = true;
e.error = true;
- Report.error (e.source_reference, "Expected initializer of type `%s' but got `%s'".printf (e.expected_type.to_string (), e.static_type.to_string ()));
+ Report.error (e.source_reference, "Expected initializer of type `%s' but got `%s'".printf (e.expected_type.to_string (), e.value_type.to_string ()));
}
}
if (!error) {
/* everything seems to be correct */
- list.static_type = list.expected_type;
+ list.value_type = list.expected_type;
}
}
@@ -967,7 +967,7 @@
return;
}
- if (!stmt.condition.static_type.compatible (bool_type)) {
+ if (!stmt.condition.value_type.compatible (bool_type)) {
stmt.error = true;
Report.error (stmt.condition.source_reference, "Condition must be boolean");
return;
@@ -1002,7 +1002,7 @@
return;
}
- if (!stmt.condition.static_type.compatible (bool_type)) {
+ if (!stmt.condition.value_type.compatible (bool_type)) {
stmt.error = true;
Report.error (stmt.condition.source_reference, "Condition must be boolean");
return;
@@ -1018,7 +1018,7 @@
return;
}
- if (!stmt.condition.static_type.compatible (bool_type)) {
+ if (!stmt.condition.value_type.compatible (bool_type)) {
stmt.error = true;
Report.error (stmt.condition.source_reference, "Condition must be boolean");
return;
@@ -1034,7 +1034,7 @@
return;
}
- if (stmt.condition != null && !stmt.condition.static_type.compatible (bool_type)) {
+ if (stmt.condition != null && !stmt.condition.value_type.compatible (bool_type)) {
stmt.error = true;
Report.error (stmt.condition.source_reference, "Condition must be boolean");
return;
@@ -1066,15 +1066,15 @@
// ignore inner error
stmt.error = true;
return;
- } else if (stmt.collection.static_type == null) {
+ } else if (stmt.collection.value_type == null) {
Report.error (stmt.collection.source_reference, "invalid collection expression");
stmt.error = true;
return;
}
- var collection_type = stmt.collection.static_type.copy ();
+ var collection_type = stmt.collection.value_type.copy ();
collection_type.transfers_ownership = false;
- collection_type.takes_ownership = stmt.collection.static_type.transfers_ownership;
+ collection_type.takes_ownership = stmt.collection.value_type.transfers_ownership;
stmt.collection_variable = new LocalVariable (collection_type, "%s_collection".printf (stmt.variable_name));
stmt.add_local_variable (stmt.collection_variable);
@@ -1156,13 +1156,13 @@
}
if (stmt.return_expression != null &&
- !stmt.return_expression.static_type.compatible (current_return_type)) {
- Report.error (stmt.source_reference, "Return: Cannot convert from `%s' to `%s'".printf (stmt.return_expression.static_type.to_string (), current_return_type.to_string ()));
+ !stmt.return_expression.value_type.compatible (current_return_type)) {
+ Report.error (stmt.source_reference, "Return: Cannot convert from `%s' to `%s'".printf (stmt.return_expression.value_type.to_string (), current_return_type.to_string ()));
return;
}
if (stmt.return_expression != null &&
- stmt.return_expression.static_type.transfers_ownership &&
+ stmt.return_expression.value_type.transfers_ownership &&
!current_return_type.transfers_ownership) {
stmt.error = true;
Report.error (stmt.source_reference, "Return value transfers ownership but method return type hasn't been declared to transfer ownership");
@@ -1171,7 +1171,7 @@
if (stmt.return_expression != null &&
stmt.return_expression.symbol_reference is LocalVariable &&
- stmt.return_expression.static_type.takes_ownership &&
+ stmt.return_expression.value_type.takes_ownership &&
!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");
}
@@ -1231,9 +1231,9 @@
return;
}
- if (!(stmt.expression.static_type is PointerType)) {
+ if (!(stmt.expression.value_type is PointerType)) {
stmt.error = true;
- Report.error (stmt.source_reference, "delete operator not supported for `%s'".printf (stmt.expression.static_type.to_string ()));
+ Report.error (stmt.source_reference, "delete operator not supported for `%s'".printf (stmt.expression.value_type.to_string ()));
}
}
@@ -1307,10 +1307,10 @@
if (size.size > 0) {
/* check for errors in the size list */
foreach (Expression e in size) {
- if (e.static_type == null) {
+ if (e.value_type == null) {
/* return on previous error */
return;
- } else if (!(e.static_type.data_type is Struct) || !((Struct) e.static_type.data_type).is_integer_type ()) {
+ } else if (!(e.value_type.data_type is Struct) || !((Struct) e.value_type.data_type).is_integer_type ()) {
expr.error = true;
Report.error (e.source_reference, "Expression of integer type expected");
}
@@ -1332,7 +1332,7 @@
}
/* check for wrong elements inside the initializer */
- if (expr.initializer_list != null && expr.initializer_list.static_type == null) {
+ if (expr.initializer_list != null && expr.initializer_list.value_type == null) {
return;
}
@@ -1350,40 +1350,40 @@
expr.element_type.takes_ownership = true;
}
- expr.static_type = new ArrayType (expr.element_type, expr.rank, expr.source_reference);
- expr.static_type.transfers_ownership = true;
- expr.static_type.takes_ownership = true;
+ expr.value_type = new ArrayType (expr.element_type, expr.rank, expr.source_reference);
+ expr.value_type.transfers_ownership = true;
+ expr.value_type.takes_ownership = true;
- expr.static_type.add_type_argument (expr.element_type);
+ expr.value_type.add_type_argument (expr.element_type);
}
public override void visit_boolean_literal (BooleanLiteral expr) {
- expr.static_type = bool_type;
+ expr.value_type = bool_type;
}
public override void visit_character_literal (CharacterLiteral expr) {
- expr.static_type = new ValueType ((Typesymbol) root_symbol.scope.lookup ("char"));
+ expr.value_type = new ValueType ((Typesymbol) root_symbol.scope.lookup ("char"));
}
public override void visit_integer_literal (IntegerLiteral expr) {
var int_type = new IntegerType ((Typesymbol) root_symbol.scope.lookup (expr.get_type_name ()));
int_type.literal = expr;
- expr.static_type = int_type;
+ expr.value_type = int_type;
}
public override void visit_real_literal (RealLiteral expr) {
- expr.static_type = new ValueType ((Typesymbol) root_symbol.scope.lookup (expr.get_type_name ()));
+ expr.value_type = new ValueType ((Typesymbol) root_symbol.scope.lookup (expr.get_type_name ()));
}
public override void visit_string_literal (StringLiteral expr) {
- expr.static_type = string_type.copy ();
+ expr.value_type = string_type.copy ();
}
public override void visit_null_literal (NullLiteral expr) {
- expr.static_type = new NullType (expr.source_reference);
+ expr.value_type = new NullType (expr.source_reference);
}
- private DataType? get_static_type_for_symbol (Symbol sym) {
+ private DataType? get_value_type_for_symbol (Symbol sym) {
if (sym is Field) {
var f = (Field) sym;
return f.type_reference;
@@ -1481,16 +1481,16 @@
return;
}
- if (expr.inner.static_type == null) {
+ if (expr.inner.value_type == null) {
// static type may be null for method references
expr.error = true;
Report.error (expr.inner.source_reference, "Invalid expression type");
return;
}
- expr.static_type = expr.inner.static_type.copy ();
+ expr.value_type = expr.inner.value_type.copy ();
// don't call g_object_ref_sink on inner and outer expression
- expr.static_type.floating_reference = false;
+ expr.value_type.floating_reference = false;
}
public override void visit_member_access (MemberAccess expr) {
@@ -1570,14 +1570,14 @@
}
}
- if (expr.symbol_reference == null && expr.inner.static_type != null) {
+ if (expr.symbol_reference == null && expr.inner.value_type != null) {
if (expr.pointer_member_access) {
- expr.symbol_reference = expr.inner.static_type.get_pointer_member (expr.member_name);
+ expr.symbol_reference = expr.inner.value_type.get_pointer_member (expr.member_name);
} else {
- if (expr.inner.static_type.data_type != null) {
- base_symbol = expr.inner.static_type.data_type;
+ if (expr.inner.value_type.data_type != null) {
+ base_symbol = expr.inner.value_type.data_type;
}
- expr.symbol_reference = expr.inner.static_type.get_member (expr.member_name);
+ expr.symbol_reference = expr.inner.value_type.get_member (expr.member_name);
}
if (expr.symbol_reference != null) {
// inner expression is variable, field, or parameter
@@ -1591,7 +1591,7 @@
expr.symbol_reference = base_symbol.scope.lookup (".new." + expr.member_name);
}
- if (expr.symbol_reference == null && expr.inner.static_type != null && expr.inner.static_type.is_dynamic) {
+ if (expr.symbol_reference == null && expr.inner.value_type != null && expr.inner.value_type.is_dynamic) {
// allow late bound members for dynamic types
if (expr.parent_node is InvocationExpression) {
var invoc = (InvocationExpression) expr.parent_node;
@@ -1602,7 +1602,7 @@
} else {
ret_type = new VoidType ();
}
- var m = new DynamicMethod (expr.inner.static_type, expr.member_name, ret_type, expr.source_reference);
+ var m = new DynamicMethod (expr.inner.value_type, expr.member_name, ret_type, expr.source_reference);
m.invocation = invoc;
m.add_error_domain (new ErrorType (null));
m.access = SymbolAccessibility.PUBLIC;
@@ -1614,7 +1614,7 @@
if (a.left == expr
&& (a.operator == AssignmentOperator.ADD
|| a.operator == AssignmentOperator.SUB)) {
- var s = new DynamicSignal (expr.inner.static_type, expr.member_name, new VoidType (), expr.source_reference);
+ var s = new DynamicSignal (expr.inner.value_type, expr.member_name, new VoidType (), expr.source_reference);
s.handler = a.right;
s.access = SymbolAccessibility.PUBLIC;
context.add_dynamic_member (s);
@@ -1631,8 +1631,8 @@
expr.error = true;
string base_type_name = "(null)";
- if (expr.inner != null && expr.inner.static_type != null) {
- base_type_name = expr.inner.static_type.to_string ();
+ if (expr.inner != null && expr.inner.value_type != null) {
+ base_type_name = expr.inner.value_type.to_string ();
} else if (base_symbol != null) {
base_type_name = base_symbol.get_full_name ();
}
@@ -1709,18 +1709,18 @@
// also set static type for prototype access
// required when using instance methods as delegates in constants
// TODO replace by MethodPrototype
- expr.static_type = get_static_type_for_symbol (expr.symbol_reference);
+ expr.value_type = get_value_type_for_symbol (expr.symbol_reference);
} else if (expr.symbol_reference is Field) {
- expr.static_type = new FieldPrototype ((Field) expr.symbol_reference);
+ expr.value_type = new FieldPrototype ((Field) expr.symbol_reference);
}
} else {
- expr.static_type = get_static_type_for_symbol (expr.symbol_reference);
+ expr.value_type = get_value_type_for_symbol (expr.symbol_reference);
// resolve generic return values
- if (expr.static_type != null && expr.static_type.type_parameter != null) {
+ if (expr.value_type != null && expr.value_type.type_parameter != null) {
if (expr.inner != null) {
- expr.static_type = get_actual_type (expr.inner.static_type, expr.symbol_reference, expr.static_type, expr);
- if (expr.static_type == null) {
+ expr.value_type = get_actual_type (expr.inner.value_type, expr.symbol_reference, expr.value_type, expr);
+ if (expr.value_type == null) {
return;
}
}
@@ -1748,7 +1748,7 @@
}
}
- var mtype = expr.call.static_type;
+ var mtype = expr.call.value_type;
// check for struct construction
if (expr.call is MemberAccess &&
@@ -1811,7 +1811,7 @@
var ma = expr.call as MemberAccess;
if (ret_type.type_parameter != null) {
if (ma != null && ma.inner != null) {
- ret_type = get_actual_type (ma.inner.static_type, ma.symbol_reference, ret_type, expr);
+ ret_type = get_actual_type (ma.inner.value_type, ma.symbol_reference, ret_type, expr);
if (ret_type == null) {
return;
}
@@ -1820,7 +1820,7 @@
Gee.List<DataType> resolved_type_args = new ArrayList<DataType> ();
foreach (DataType type_arg in ret_type.get_type_arguments ()) {
if (type_arg.type_parameter != null && ma != null && ma.inner != null) {
- resolved_type_args.add (get_actual_type (ma.inner.static_type, ma.symbol_reference, type_arg, expr));
+ resolved_type_args.add (get_actual_type (ma.inner.value_type, ma.symbol_reference, type_arg, expr));
} else {
resolved_type_args.add (type_arg);
}
@@ -1836,7 +1836,7 @@
expr.tree_can_fail = expr.can_fail = (m.get_error_domains ().size > 0);
}
- expr.static_type = ret_type;
+ expr.value_type = ret_type;
check_arguments (expr, mtype, params, expr.get_argument_list ());
}
@@ -1870,22 +1870,22 @@
// ignore inner error
expr.error = true;
return false;
- } else if (arg.static_type == null) {
+ } else if (arg.value_type == null) {
// disallow untyped arguments except for type inference of callbacks
if (!(param.type_reference is DelegateType) || !(arg.symbol_reference is Method)) {
expr.error = true;
Report.error (arg.source_reference, "Invalid type for argument %d".printf (i + 1));
return false;
}
- } else if (!arg.static_type.compatible (param.type_reference)
+ } else if (!arg.value_type.compatible (param.type_reference)
&& !(arg is NullLiteral && param.direction == ParameterDirection.OUT)) {
expr.error = true;
- Report.error (arg.source_reference, "Argument %d: Cannot convert from `%s' to `%s'".printf (i + 1, arg.static_type.to_string (), param.type_reference.to_string ()));
+ Report.error (arg.source_reference, "Argument %d: Cannot convert from `%s' to `%s'".printf (i + 1, arg.value_type.to_string (), param.type_reference.to_string ()));
return false;
} else {
// 0 => null, 1 => in, 2 => ref, 3 => out
int arg_type = 1;
- if (arg.static_type is NullType) {
+ if (arg.value_type is NullType) {
arg_type = 0;
} else if (arg is UnaryExpression) {
var unary = (UnaryExpression) arg;
@@ -1938,7 +1938,7 @@
// ignore inner error
expr.error = true;
return false;
- } else if (arg.static_type == null) {
+ } else if (arg.value_type == null) {
// disallow untyped arguments except for type inference of callbacks
if (!(arg.symbol_reference is Method)) {
expr.error = true;
@@ -2100,21 +2100,21 @@
}
public override void visit_element_access (ElementAccess expr) {
- if (expr.container.static_type == null) {
+ if (expr.container.value_type == null) {
/* don't proceed if a child expression failed */
expr.error = true;
return;
}
- var container_type = expr.container.static_type.data_type;
+ var container_type = expr.container.value_type.data_type;
bool index_int_type_check = true;
- var pointer_type = expr.container.static_type as PointerType;
+ var pointer_type = expr.container.value_type as PointerType;
- /* assign a static_type when possible */
- if (expr.container.static_type is ArrayType) {
- var args = expr.container.static_type.get_type_arguments ();
+ /* assign a value_type when possible */
+ if (expr.container.value_type is ArrayType) {
+ var args = expr.container.value_type.get_type_arguments ();
if (args.size != 1) {
expr.error = true;
@@ -2122,9 +2122,9 @@
return;
}
- expr.static_type = args.get (0);
+ expr.value_type = args.get (0);
} else if (pointer_type != null && !pointer_type.base_type.is_reference_type_or_type_parameter ()) {
- expr.static_type = pointer_type.base_type.copy ();
+ expr.value_type = pointer_type.base_type.copy ();
} else if (container_type == string_type.data_type) {
if (expr.get_indices ().size != 1) {
expr.error = true;
@@ -2132,7 +2132,7 @@
return;
}
- expr.static_type = unichar_type;
+ expr.value_type = unichar_type;
} else if (container_type != null && list_type != null && map_type != null &&
(container_type.is_subtype_of (list_type) || container_type.is_subtype_of (map_type))) {
Collection<Expression> indices = expr.get_indices ();
@@ -2161,32 +2161,32 @@
var index_type = get_param.type_reference;
if (index_type.type_parameter != null) {
- index_type = get_actual_type (expr.container.static_type, get_method, get_param.type_reference, expr);
+ index_type = get_actual_type (expr.container.value_type, get_method, get_param.type_reference, expr);
}
- if (!index.static_type.compatible (index_type)) {
+ if (!index.value_type.compatible (index_type)) {
expr.error = true;
- Report.error (expr.source_reference, "index expression: Cannot convert from `%s' to `%s'".printf (index.static_type.to_string (), index_type.to_string ()));
+ Report.error (expr.source_reference, "index expression: Cannot convert from `%s' to `%s'".printf (index.value_type.to_string (), index_type.to_string ()));
return;
}
- expr.static_type = get_actual_type (expr.container.static_type, get_method, get_method.return_type, expr).copy ();
- expr.static_type.takes_ownership = false;
+ expr.value_type = get_actual_type (expr.container.value_type, get_method, get_method.return_type, expr).copy ();
+ expr.value_type.takes_ownership = false;
} else {
expr.error = true;
- Report.error (expr.source_reference, "The expression `%s' does not denote an Array".printf (expr.container.static_type.to_string ()));
+ Report.error (expr.source_reference, "The expression `%s' does not denote an Array".printf (expr.container.value_type.to_string ()));
}
if (index_int_type_check) {
/* check if the index is of type integer */
foreach (Expression e in expr.get_indices ()) {
/* don't proceed if a child expression failed */
- if (e.static_type == null) {
+ if (e.value_type == null) {
return;
}
/* check if the index is of type integer */
- if (!(e.static_type.data_type is Struct) || !((Struct) e.static_type.data_type).is_integer_type ()) {
+ if (!(e.value_type.data_type is Struct) || !((Struct) e.value_type.data_type).is_integer_type ()) {
expr.error = true;
Report.error (e.source_reference, "Expression of integer type expected");
}
@@ -2235,20 +2235,20 @@
}
Iterator<DataType> base_type_it = current_struct.get_base_types ().iterator ();
base_type_it.next ();
- expr.static_type = base_type_it.get ();
+ expr.value_type = base_type_it.get ();
} else if (current_class.base_class == null) {
expr.error = true;
Report.error (expr.source_reference, "Base access invalid without base class");
return;
} else {
- expr.static_type = new ClassInstanceType (current_class.base_class);
+ expr.value_type = new ClassInstanceType (current_class.base_class);
}
- expr.symbol_reference = expr.static_type.data_type;
+ expr.symbol_reference = expr.value_type.data_type;
}
public override void visit_postfix_expression (PostfixExpression expr) {
- expr.static_type = expr.inner.static_type;
+ expr.value_type = expr.inner.value_type;
}
public override void visit_object_creation_expression (ObjectCreationExpression expr) {
@@ -2319,8 +2319,8 @@
current_source_file.add_symbol_dependency (type, SourceFileDependencyType.SOURCE);
- expr.static_type = expr.type_reference.copy ();
- expr.static_type.transfers_ownership = true;
+ expr.value_type = expr.type_reference.copy ();
+ expr.value_type.transfers_ownership = true;
int given_num_type_args = expr.type_reference.get_type_arguments ().size;
int expected_num_type_args = 0;
@@ -2337,14 +2337,14 @@
}
if (cl.is_abstract) {
- expr.static_type = null;
+ expr.value_type = null;
expr.error = true;
Report.error (expr.source_reference, "Can't create instance of abstract class `%s'".printf (cl.get_full_name ()));
return;
}
if (cl.is_static) {
- expr.static_type = null;
+ expr.value_type = null;
expr.error = true;
Report.error (expr.source_reference, "Can't create instance of static class `%s'".printf (cl.get_full_name ()));
return;
@@ -2356,7 +2356,7 @@
while (cl != null) {
if (cl == initially_unowned_type) {
- expr.static_type.floating_reference = true;
+ expr.value_type.floating_reference = true;
break;
}
@@ -2371,7 +2371,7 @@
Report.warning (expr.source_reference, "deprecated syntax, don't use `new' to initialize structs");
}
- expr.static_type.transfers_ownership = false;
+ expr.value_type.transfers_ownership = false;
if (expr.symbol_reference == null) {
expr.symbol_reference = st.default_construction_method;
@@ -2389,7 +2389,7 @@
}
if (expr.symbol_reference == null && expr.get_argument_list ().size != 0) {
- expr.static_type = null;
+ expr.value_type = null;
expr.error = true;
Report.error (expr.source_reference, "No arguments allowed when constructing type `%s'".printf (type.get_full_name ()));
return;
@@ -2430,12 +2430,12 @@
Iterator<Expression> arg_it = expr.get_argument_list ().iterator ();
arg_it.next ();
var ex = arg_it.get ();
- if (ex.static_type == null || !ex.static_type.compatible (string_type)) {
+ if (ex.value_type == null || !ex.value_type.compatible (string_type)) {
expr.error = true;
Report.error (expr.source_reference, "Invalid type for argument 1");
}
}
- expr.static_type = new VoidType ();
+ expr.value_type = new VoidType ();
}
foreach (MemberInitializer init in expr.get_object_initializer ()) {
@@ -2470,7 +2470,7 @@
return;
}
}
- if (init.initializer.static_type == null || !init.initializer.static_type.compatible (member_type)) {
+ if (init.initializer.value_type == null || !init.initializer.value_type.compatible (member_type)) {
init.error = true;
Report.error (init.source_reference, "Invalid type for member `%s'".printf (init.name));
return;
@@ -2478,11 +2478,11 @@
}
public override void visit_sizeof_expression (SizeofExpression expr) {
- expr.static_type = ulong_type;
+ expr.value_type = ulong_type;
}
public override void visit_typeof_expression (TypeofExpression expr) {
- expr.static_type = type_type;
+ expr.value_type = type_type;
}
private bool is_numeric_type (DataType type) {
@@ -2512,37 +2512,37 @@
if (expr.operator == UnaryOperator.PLUS || expr.operator == UnaryOperator.MINUS) {
// integer or floating point type
- if (!is_numeric_type (expr.inner.static_type)) {
+ if (!is_numeric_type (expr.inner.value_type)) {
expr.error = true;
- Report.error (expr.source_reference, "Operator not supported for `%s'".printf (expr.inner.static_type.to_string ()));
+ Report.error (expr.source_reference, "Operator not supported for `%s'".printf (expr.inner.value_type.to_string ()));
return;
}
- expr.static_type = expr.inner.static_type;
+ expr.value_type = expr.inner.value_type;
} else if (expr.operator == UnaryOperator.LOGICAL_NEGATION) {
// boolean type
- if (!expr.inner.static_type.compatible (bool_type)) {
+ if (!expr.inner.value_type.compatible (bool_type)) {
expr.error = true;
- Report.error (expr.source_reference, "Operator not supported for `%s'".printf (expr.inner.static_type.to_string ()));
+ Report.error (expr.source_reference, "Operator not supported for `%s'".printf (expr.inner.value_type.to_string ()));
return;
}
- expr.static_type = expr.inner.static_type;
+ expr.value_type = expr.inner.value_type;
} else if (expr.operator == UnaryOperator.BITWISE_COMPLEMENT) {
// integer type
- if (!is_integer_type (expr.inner.static_type)) {
+ if (!is_integer_type (expr.inner.value_type)) {
expr.error = true;
- Report.error (expr.source_reference, "Operator not supported for `%s'".printf (expr.inner.static_type.to_string ()));
+ Report.error (expr.source_reference, "Operator not supported for `%s'".printf (expr.inner.value_type.to_string ()));
return;
}
- expr.static_type = expr.inner.static_type;
+ expr.value_type = expr.inner.value_type;
} else if (expr.operator == UnaryOperator.INCREMENT ||
expr.operator == UnaryOperator.DECREMENT) {
// integer type
- if (!is_integer_type (expr.inner.static_type)) {
+ if (!is_integer_type (expr.inner.value_type)) {
expr.error = true;
- Report.error (expr.source_reference, "Operator not supported for `%s'".printf (expr.inner.static_type.to_string ()));
+ Report.error (expr.source_reference, "Operator not supported for `%s'".printf (expr.inner.value_type.to_string ()));
return;
}
@@ -2564,7 +2564,7 @@
} else if (expr.operator == UnaryOperator.REF || expr.operator == UnaryOperator.OUT) {
if (expr.inner.symbol_reference is Field || expr.inner.symbol_reference is FormalParameter || expr.inner.symbol_reference is LocalVariable) {
// ref and out can only be used with fields, parameters, and local variables
- expr.static_type = expr.inner.static_type;
+ expr.value_type = expr.inner.value_type;
} else {
expr.error = true;
Report.error (expr.source_reference, "ref and out method arguments can only be used with fields, parameters, and local variables");
@@ -2600,27 +2600,27 @@
current_source_file.add_type_dependency (expr.type_reference, SourceFileDependencyType.SOURCE);
- expr.static_type = expr.type_reference;
- expr.static_type.transfers_ownership = expr.inner.static_type.transfers_ownership;
+ expr.value_type = expr.type_reference;
+ expr.value_type.transfers_ownership = expr.inner.value_type.transfers_ownership;
}
public override void visit_pointer_indirection (PointerIndirection expr) {
if (expr.inner.error) {
return;
}
- if (expr.inner.static_type == null) {
+ if (expr.inner.value_type == null) {
expr.error = true;
Report.error (expr.source_reference, "internal error: unknown type of inner expression");
return;
}
- if (expr.inner.static_type is PointerType) {
- var pointer_type = (PointerType) expr.inner.static_type;
+ if (expr.inner.value_type is PointerType) {
+ var pointer_type = (PointerType) expr.inner.value_type;
if (pointer_type.base_type is ReferenceType) {
expr.error = true;
Report.error (expr.source_reference, "Pointer indirection not supported for this expression");
return;
}
- expr.static_type = pointer_type.base_type;
+ expr.value_type = pointer_type.base_type;
} else {
expr.error = true;
Report.error (expr.source_reference, "Pointer indirection not supported for this expression");
@@ -2632,19 +2632,19 @@
if (expr.inner.error) {
return;
}
- if (!(expr.inner.static_type is ValueType
- || expr.inner.static_type is ClassInstanceType
- || expr.inner.static_type is InterfaceInstanceType
- || expr.inner.static_type is PointerType)) {
+ if (!(expr.inner.value_type is ValueType
+ || expr.inner.value_type is ClassInstanceType
+ || expr.inner.value_type is InterfaceInstanceType
+ || expr.inner.value_type is PointerType)) {
expr.error = true;
Report.error (expr.source_reference, "Address-of operator not supported for this expression");
return;
}
- if (expr.inner.static_type.is_reference_type_or_type_parameter ()) {
- expr.static_type = new PointerType (new PointerType (expr.inner.static_type));
+ if (expr.inner.value_type.is_reference_type_or_type_parameter ()) {
+ expr.value_type = new PointerType (new PointerType (expr.inner.value_type));
} else {
- expr.static_type = new PointerType (expr.inner.static_type);
+ expr.value_type = new PointerType (expr.inner.value_type);
}
}
@@ -2661,16 +2661,16 @@
return;
}
- if (!expr.inner.static_type.takes_ownership
- && !(expr.inner.static_type is PointerType)) {
+ if (!expr.inner.value_type.takes_ownership
+ && !(expr.inner.value_type is PointerType)) {
expr.error = true;
Report.error (expr.source_reference, "No reference to be transferred");
return;
}
- expr.static_type = expr.inner.static_type.copy ();
- expr.static_type.transfers_ownership = true;
- expr.static_type.takes_ownership = false;
+ expr.value_type = expr.inner.value_type.copy ();
+ expr.value_type.transfers_ownership = true;
+ expr.value_type.takes_ownership = false;
}
private DataType? get_arithmetic_result_type (DataType left_type, DataType right_type) {
@@ -2712,21 +2712,21 @@
return;
}
- if (expr.left.static_type == null) {
+ if (expr.left.value_type == null) {
Report.error (expr.left.source_reference, "invalid left operand");
expr.error = true;
return;
}
- if (expr.operator != BinaryOperator.IN && expr.right.static_type == null) {
+ if (expr.operator != BinaryOperator.IN && expr.right.value_type == null) {
Report.error (expr.right.source_reference, "invalid right operand");
expr.error = true;
return;
}
- if (expr.left.static_type.data_type == string_type.data_type
+ if (expr.left.value_type.data_type == string_type.data_type
&& expr.operator == BinaryOperator.PLUS) {
- if (expr.right.static_type == null || expr.right.static_type.data_type != string_type.data_type) {
+ if (expr.right.value_type == null || expr.right.value_type.data_type != string_type.data_type) {
expr.error = true;
Report.error (expr.source_reference, "Operands must be strings");
return;
@@ -2745,94 +2745,94 @@
|| expr.operator == BinaryOperator.MUL
|| expr.operator == BinaryOperator.DIV) {
// check for pointer arithmetic
- if (expr.left.static_type is PointerType) {
- var offset_type = expr.right.static_type.data_type as Struct;
+ if (expr.left.value_type is PointerType) {
+ var offset_type = expr.right.value_type.data_type as Struct;
if (offset_type != null && offset_type.is_integer_type ()) {
if (expr.operator == BinaryOperator.PLUS
|| expr.operator == BinaryOperator.MINUS) {
// pointer arithmetic: pointer +/- offset
- expr.static_type = expr.left.static_type.copy ();
+ expr.value_type = expr.left.value_type.copy ();
}
- } else if (expr.right.static_type is PointerType) {
+ } else if (expr.right.value_type is PointerType) {
// pointer arithmetic: pointer - pointer
- expr.static_type = size_t_type;
+ expr.value_type = size_t_type;
}
}
- if (expr.static_type == null) {
- expr.static_type = get_arithmetic_result_type (expr.left.static_type, expr.right.static_type);
+ if (expr.value_type == null) {
+ expr.value_type = get_arithmetic_result_type (expr.left.value_type, expr.right.value_type);
}
- if (expr.static_type == null) {
+ if (expr.value_type == null) {
expr.error = true;
- Report.error (expr.source_reference, "Arithmetic operation not supported for types `%s' and `%s'".printf (expr.left.static_type.to_string (), expr.right.static_type.to_string ()));
+ Report.error (expr.source_reference, "Arithmetic operation not supported for types `%s' and `%s'".printf (expr.left.value_type.to_string (), expr.right.value_type.to_string ()));
return;
}
} else if (expr.operator == BinaryOperator.MOD
|| expr.operator == BinaryOperator.SHIFT_LEFT
|| expr.operator == BinaryOperator.SHIFT_RIGHT
|| expr.operator == BinaryOperator.BITWISE_XOR) {
- expr.static_type = get_arithmetic_result_type (expr.left.static_type, expr.right.static_type);
+ expr.value_type = get_arithmetic_result_type (expr.left.value_type, expr.right.value_type);
- if (expr.static_type == null) {
+ if (expr.value_type == null) {
expr.error = true;
- Report.error (expr.source_reference, "Arithmetic operation not supported for types `%s' and `%s'".printf (expr.left.static_type.to_string (), expr.right.static_type.to_string ()));
+ Report.error (expr.source_reference, "Arithmetic operation not supported for types `%s' and `%s'".printf (expr.left.value_type.to_string (), expr.right.value_type.to_string ()));
return;
}
} else if (expr.operator == BinaryOperator.LESS_THAN
|| expr.operator == BinaryOperator.GREATER_THAN
|| expr.operator == BinaryOperator.LESS_THAN_OR_EQUAL
|| expr.operator == BinaryOperator.GREATER_THAN_OR_EQUAL) {
- if (expr.left.static_type.compatible (string_type)
- && expr.right.static_type.compatible (string_type)) {
+ if (expr.left.value_type.compatible (string_type)
+ && expr.right.value_type.compatible (string_type)) {
// string comparison
- } else if (expr.left.static_type is PointerType && expr.right.static_type is PointerType) {
+ } else if (expr.left.value_type is PointerType && expr.right.value_type is PointerType) {
// pointer arithmetic
} else {
- var resulting_type = get_arithmetic_result_type (expr.left.static_type, expr.right.static_type);
+ var resulting_type = get_arithmetic_result_type (expr.left.value_type, expr.right.value_type);
if (resulting_type == null) {
expr.error = true;
- Report.error (expr.source_reference, "Relational operation not supported for types `%s' and `%s'".printf (expr.left.static_type.to_string (), expr.right.static_type.to_string ()));
+ Report.error (expr.source_reference, "Relational operation not supported for types `%s' and `%s'".printf (expr.left.value_type.to_string (), expr.right.value_type.to_string ()));
return;
}
}
- expr.static_type = bool_type;
+ expr.value_type = bool_type;
} else if (expr.operator == BinaryOperator.EQUALITY
|| expr.operator == BinaryOperator.INEQUALITY) {
/* relational operation */
- if (!expr.right.static_type.compatible (expr.left.static_type)
- && !expr.left.static_type.compatible (expr.right.static_type)) {
- Report.error (expr.source_reference, "Equality operation: `%s' and `%s' are incompatible".printf (expr.right.static_type.to_string (), expr.left.static_type.to_string ()));
+ if (!expr.right.value_type.compatible (expr.left.value_type)
+ && !expr.left.value_type.compatible (expr.right.value_type)) {
+ Report.error (expr.source_reference, "Equality operation: `%s' and `%s' are incompatible".printf (expr.right.value_type.to_string (), expr.left.value_type.to_string ()));
expr.error = true;
return;
}
- if (expr.left.static_type.compatible (string_type)
- && expr.right.static_type.compatible (string_type)) {
+ if (expr.left.value_type.compatible (string_type)
+ && expr.right.value_type.compatible (string_type)) {
// string comparison
}
- expr.static_type = bool_type;
+ expr.value_type = bool_type;
} else if (expr.operator == BinaryOperator.BITWISE_AND
|| expr.operator == BinaryOperator.BITWISE_OR) {
// integer type or flags type
- expr.static_type = expr.left.static_type;
+ expr.value_type = expr.left.value_type;
} else if (expr.operator == BinaryOperator.AND
|| expr.operator == BinaryOperator.OR) {
- if (!expr.left.static_type.compatible (bool_type) || !expr.right.static_type.compatible (bool_type)) {
+ if (!expr.left.value_type.compatible (bool_type) || !expr.right.value_type.compatible (bool_type)) {
expr.error = true;
Report.error (expr.source_reference, "Operands must be boolean");
}
- expr.static_type = bool_type;
+ expr.value_type = bool_type;
} else if (expr.operator == BinaryOperator.IN) {
// integer type or flags type
- expr.static_type = bool_type;
+ expr.value_type = bool_type;
} else {
assert_not_reached ();
}
@@ -2847,21 +2847,21 @@
current_source_file.add_type_dependency (expr.type_reference, SourceFileDependencyType.SOURCE);
- expr.static_type = bool_type;
+ expr.value_type = bool_type;
}
public override void visit_conditional_expression (ConditionalExpression expr) {
- if (!expr.condition.static_type.compatible (bool_type)) {
+ if (!expr.condition.value_type.compatible (bool_type)) {
expr.error = true;
Report.error (expr.condition.source_reference, "Condition must be boolean");
return;
}
/* FIXME: support memory management */
- if (expr.false_expression.static_type.compatible (expr.true_expression.static_type)) {
- expr.static_type = expr.true_expression.static_type.copy ();
- } else if (expr.true_expression.static_type.compatible (expr.false_expression.static_type)) {
- expr.static_type = expr.false_expression.static_type.copy ();
+ if (expr.false_expression.value_type.compatible (expr.true_expression.value_type)) {
+ expr.value_type = expr.true_expression.value_type.copy ();
+ } else if (expr.true_expression.value_type.compatible (expr.false_expression.value_type)) {
+ expr.value_type = expr.false_expression.value_type.copy ();
} else {
expr.error = true;
Report.error (expr.condition.source_reference, "Incompatible expressions");
@@ -2979,7 +2979,7 @@
if (a.left is MemberAccess) {
var ma = (MemberAccess) a.left;
- if (!(ma.symbol_reference is Signal) && ma.static_type == null) {
+ if (!(ma.symbol_reference is Signal) && ma.value_type == null) {
a.error = true;
Report.error (a.source_reference, "unsupported lvalue in assignment");
return;
@@ -3003,7 +3003,7 @@
a.right.expected_type = new DelegateType (deleg);
}
} else {
- a.right.expected_type = ma.static_type;
+ a.right.expected_type = ma.value_type;
}
} else if (a.left is ElementAccess) {
// do nothing
@@ -3084,7 +3084,7 @@
Report.error (ma.source_reference, "Property `%s' is read-only".printf (prop.get_full_name ()));
return;
}
- } else if (ma.symbol_reference is LocalVariable && a.right.static_type == null) {
+ } else if (ma.symbol_reference is LocalVariable && a.right.value_type == null) {
var local = (LocalVariable) ma.symbol_reference;
if (a.right.symbol_reference is Method &&
@@ -3100,13 +3100,13 @@
return;
}
- a.right.static_type = local.variable_type;
+ a.right.value_type = local.variable_type;
} else {
a.error = true;
Report.error (a.source_reference, "Assignment: Invalid callback assignment attempt");
return;
}
- } else if (ma.symbol_reference is Field && a.right.static_type == null) {
+ } else if (ma.symbol_reference is Field && a.right.value_type == null) {
var f = (Field) ma.symbol_reference;
if (a.right.symbol_reference is Method &&
@@ -3122,30 +3122,30 @@
return;
}
- a.right.static_type = f.type_reference;
+ a.right.value_type = f.type_reference;
} else {
a.error = true;
Report.error (a.source_reference, "Assignment: Invalid callback assignment attempt");
return;
}
- } else if (a.left.static_type != null && a.right.static_type != null) {
+ } else if (a.left.value_type != null && a.right.value_type != null) {
/* if there was an error on either side,
- * i.e. a.{left|right}.static_type == null, skip type check */
+ * i.e. a.{left|right}.value_type == null, skip type check */
- if (!a.right.static_type.compatible (a.left.static_type)) {
+ if (!a.right.value_type.compatible (a.left.value_type)) {
a.error = true;
- Report.error (a.source_reference, "Assignment: Cannot convert from `%s' to `%s'".printf (a.right.static_type.to_string (), a.left.static_type.to_string ()));
+ Report.error (a.source_reference, "Assignment: Cannot convert from `%s' to `%s'".printf (a.right.value_type.to_string (), a.left.value_type.to_string ()));
return;
}
- if (a.right.static_type.transfers_ownership) {
+ if (a.right.value_type.transfers_ownership) {
/* rhs transfers ownership of the expression */
- if (!(a.left.static_type is PointerType) && !a.left.static_type.takes_ownership) {
+ if (!(a.left.value_type is PointerType) && !a.left.value_type.takes_ownership) {
/* lhs doesn't own the value */
a.error = true;
Report.error (a.source_reference, "Invalid assignment from owned expression to unowned variable");
}
- } else if (a.left.static_type.takes_ownership) {
+ } else if (a.left.value_type.takes_ownership) {
/* lhs wants to own the value
* rhs doesn't transfer the ownership
* code generator needs to add reference
@@ -3155,16 +3155,16 @@
} else if (a.left is ElementAccess) {
var ea = (ElementAccess) a.left;
- if (!a.right.static_type.compatible (a.left.static_type)) {
+ if (!a.right.value_type.compatible (a.left.value_type)) {
a.error = true;
- Report.error (a.source_reference, "Assignment: Cannot convert from `%s' to `%s'".printf (a.right.static_type.to_string (), a.left.static_type.to_string ()));
+ Report.error (a.source_reference, "Assignment: Cannot convert from `%s' to `%s'".printf (a.right.value_type.to_string (), a.left.value_type.to_string ()));
return;
}
- if (a.right.static_type.transfers_ownership) {
+ if (a.right.value_type.transfers_ownership) {
/* rhs transfers ownership of the expression */
- var args = ea.container.static_type.get_type_arguments ();
+ var args = ea.container.value_type.get_type_arguments ();
if (args.size != 1) {
a.error = true;
Report.error (ea.source_reference, "internal error: array reference with %d type arguments".printf (args.size));
@@ -3178,7 +3178,7 @@
Report.error (a.source_reference, "Invalid assignment from owned expression to unowned variable");
return;
}
- } else if (a.left.static_type.takes_ownership) {
+ } else if (a.left.value_type.takes_ownership) {
/* lhs wants to own the value
* rhs doesn't transfer the ownership
* code generator needs to add reference
@@ -3188,14 +3188,14 @@
return;
}
- if (a.left.static_type != null) {
- a.static_type = a.left.static_type.copy ();
+ if (a.left.value_type != null) {
+ a.value_type = a.left.value_type.copy ();
if (a.parent_node is ExpressionStatement) {
// Gee.List.get () transfers ownership but void function Gee.List.set () doesn't
- a.static_type.transfers_ownership = false;
+ a.value_type.transfers_ownership = false;
}
} else {
- a.static_type = null;
+ a.value_type = null;
}
a.tree_can_fail = a.left.tree_can_fail || a.right.tree_can_fail;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]