vala r1165 - in trunk: . gobject vala
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r1165 - in trunk: . gobject vala
- Date: Mon, 31 Mar 2008 20:18:25 +0100 (BST)
Author: juergbi
Date: Mon Mar 31 20:18:24 2008
New Revision: 1165
URL: http://svn.gnome.org/viewvc/vala?rev=1165&view=rev
Log:
2008-03-31 Juerg Billeter <j bitron ch>
* vala/Makefile.am, vala/parser.y, vala/vala.h,
vala/valaattribute.vala, vala/valabooleanliteral.vala,
vala/valacharacterliteral.vala, vala/valacodecontext.vala,
vala/valacodegenerator.vala, vala/valacodevisitor.vala,
vala/valaintegerliteral.vala, vala/valaliteral.vala,
vala/valanullliteral.vala, vala/valarealliteral.vala,
vala/valasemanticanalyzer.vala, vala/valastringliteral.vala,
gobject/valaccodeelementaccessbinding.vala,
gobject/valaccodegenerator.vala:
Merge Literal and LiteralExpression
Removed:
trunk/vala/valaliteralexpression.vala
Modified:
trunk/ChangeLog
trunk/gobject/valaccodeelementaccessbinding.vala
trunk/gobject/valaccodegenerator.vala
trunk/vala/Makefile.am
trunk/vala/parser.y
trunk/vala/vala.h
trunk/vala/valaattribute.vala
trunk/vala/valabooleanliteral.vala
trunk/vala/valacharacterliteral.vala
trunk/vala/valacodecontext.vala
trunk/vala/valacodegenerator.vala
trunk/vala/valacodevisitor.vala
trunk/vala/valaintegerliteral.vala
trunk/vala/valaliteral.vala
trunk/vala/valanullliteral.vala
trunk/vala/valarealliteral.vala
trunk/vala/valasemanticanalyzer.vala
trunk/vala/valastringliteral.vala
Modified: trunk/gobject/valaccodeelementaccessbinding.vala
==============================================================================
--- trunk/gobject/valaccodeelementaccessbinding.vala (original)
+++ trunk/gobject/valaccodeelementaccessbinding.vala Mon Mar 31 20:18:24 2008
@@ -1,6 +1,6 @@
/* valaccodeelementaccessbinding.vala
*
- * Copyright (C) 2006-2007 JÃrg Billeter, Raffaele Sandrini
+ * Copyright (C) 2006-2008 JÃrg Billeter, Raffaele Sandrini
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -45,12 +45,10 @@
var cindex = (CCodeExpression) indices[0].ccodenode;
if (expr.container.symbol_reference is ArrayLengthField) {
/* Figure if cindex is a constant expression and calculate dim...*/
- var lit = indices[0] as LiteralExpression;
+ var lit = indices[0] as IntegerLiteral;
var memberaccess = expr.container as MemberAccess;
- if (lit != null &&
- lit.literal is IntegerLiteral &&
- memberaccess != null) {
- int dim = (lit.literal as IntegerLiteral).value.to_int ();
+ if (lit != null && memberaccess != null) {
+ int dim = lit.value.to_int ();
codenode = codegen.get_array_length_cexpression (memberaccess.inner, dim + 1);
}
} else if (container_type == codegen.string_type.data_type) {
Modified: trunk/gobject/valaccodegenerator.vala
==============================================================================
--- trunk/gobject/valaccodegenerator.vala (original)
+++ trunk/gobject/valaccodegenerator.vala Mon Mar 31 20:18:24 2008
@@ -2328,6 +2328,8 @@
public override void visit_boolean_literal (BooleanLiteral! expr) {
expr.ccodenode = new CCodeConstant (expr.value ? "TRUE" : "FALSE");
+
+ visit_expression (expr);
}
public override void visit_character_literal (CharacterLiteral! expr) {
@@ -2336,27 +2338,31 @@
} else {
expr.ccodenode = new CCodeConstant ("%uU".printf (expr.get_char ()));
}
+
+ visit_expression (expr);
}
public override void visit_integer_literal (IntegerLiteral! expr) {
expr.ccodenode = new CCodeConstant (expr.value);
+
+ visit_expression (expr);
}
public override void visit_real_literal (RealLiteral! expr) {
expr.ccodenode = new CCodeConstant (expr.value);
+
+ visit_expression (expr);
}
public override void visit_string_literal (StringLiteral! expr) {
expr.ccodenode = new CCodeConstant (expr.value);
+
+ visit_expression (expr);
}
public override void visit_null_literal (NullLiteral! expr) {
expr.ccodenode = new CCodeConstant ("NULL");
- }
- public override void visit_literal_expression (LiteralExpression! expr) {
- expr.ccodenode = expr.literal.ccodenode;
-
visit_expression (expr);
}
@@ -2489,11 +2495,8 @@
ccall.add_argument (new CCodeIdentifier (constant.get_cname ()));
return ccall;
}
- } else if (array_expr is LiteralExpression) {
- var lit = (LiteralExpression) array_expr;
- if (lit.literal is NullLiteral) {
- return new CCodeConstant ("0");
- }
+ } else if (array_expr is NullLiteral) {
+ return new CCodeConstant ("0");
}
if (!is_out) {
@@ -2697,7 +2700,7 @@
var ccall = new CCodeFunctionCall (dupexpr);
- if (((context.non_null && !expr.static_type.requires_null_check) && expr.static_type.type_parameter == null) || expr is LiteralExpression) {
+ if (((context.non_null && !expr.static_type.requires_null_check) && expr.static_type.type_parameter == null) || expr is StringLiteral) {
// expression is non-null
ccall.add_argument ((CCodeExpression) expr.ccodenode);
@@ -3737,10 +3740,6 @@
return null;
}
- public override CodeBinding create_literal_expression_binding (LiteralExpression! node) {
- return null;
- }
-
public override CodeBinding create_parenthesized_expression_binding (ParenthesizedExpression! node) {
return null;
}
Modified: trunk/vala/Makefile.am
==============================================================================
--- trunk/vala/Makefile.am (original)
+++ trunk/vala/Makefile.am Mon Mar 31 20:18:24 2008
@@ -79,7 +79,6 @@
valainvocationexpression.vala \
valalambdaexpression.vala \
valaliteral.vala \
- valaliteralexpression.vala \
valalocalvariabledeclaration.vala \
valalockable.vala \
valalockstatement.vala \
Modified: trunk/vala/parser.y
==============================================================================
--- trunk/vala/parser.y (original)
+++ trunk/vala/parser.y Mon Mar 31 20:18:24 2008
@@ -71,7 +71,6 @@
int num;
char *str;
GList *list;
- ValaLiteral *literal;
ValaUnresolvedSymbol *unresolved_symbol;
ValaDataType *type_reference;
ValaExpression *expression;
@@ -227,8 +226,8 @@
%type <str> comment
%type <str> identifier
%type <str> identifier_or_keyword
-%type <literal> literal
-%type <literal> boolean_literal
+%type <expression> literal
+%type <expression> boolean_literal
%type <num> stars
%type <unresolved_symbol> symbol_name
%type <type_reference> type_name
@@ -489,35 +488,35 @@
| INTEGER_LITERAL
{
ValaSourceReference *src = src(@1);
- $$ = VALA_LITERAL (vala_code_context_create_integer_literal (context, $1, src));
+ $$ = VALA_EXPRESSION (vala_code_context_create_integer_literal (context, $1, src));
g_object_unref (src);
g_free ($1);
}
| REAL_LITERAL
{
ValaSourceReference *src = src(@1);
- $$ = VALA_LITERAL (vala_code_context_create_real_literal (context, $1, src));
+ $$ = VALA_EXPRESSION (vala_code_context_create_real_literal (context, $1, src));
g_free ($1);
g_object_unref (src);
}
| CHARACTER_LITERAL
{
ValaSourceReference *src = src(@1);
- $$ = VALA_LITERAL (vala_code_context_create_character_literal (context, $1, src));
+ $$ = VALA_EXPRESSION (vala_code_context_create_character_literal (context, $1, src));
g_object_unref (src);
g_free ($1);
}
| STRING_LITERAL
{
ValaSourceReference *src = src(@1);
- $$ = VALA_LITERAL (vala_code_context_create_string_literal (context, $1, src));
+ $$ = VALA_EXPRESSION (vala_code_context_create_string_literal (context, $1, src));
g_object_unref (src);
g_free ($1);
}
| VALA_NULL
{
ValaSourceReference *src = src(@1);
- $$ = VALA_LITERAL (vala_code_context_create_null_literal (context, src));
+ $$ = VALA_EXPRESSION (vala_code_context_create_null_literal (context, src));
g_object_unref (src);
}
;
@@ -526,13 +525,13 @@
: VALA_TRUE
{
ValaSourceReference *src = src(@1);
- $$ = VALA_LITERAL (vala_code_context_create_boolean_literal (context, TRUE, src));
+ $$ = VALA_EXPRESSION (vala_code_context_create_boolean_literal (context, TRUE, src));
g_object_unref (src);
}
| VALA_FALSE
{
ValaSourceReference *src = src(@1);
- $$ = VALA_LITERAL (vala_code_context_create_boolean_literal (context, FALSE, src));
+ $$ = VALA_EXPRESSION (vala_code_context_create_boolean_literal (context, FALSE, src));
g_object_unref (src);
}
;
@@ -796,12 +795,6 @@
primary_no_array_creation_expression
: literal
- {
- ValaSourceReference *src = src(@1);
- $$ = VALA_EXPRESSION (vala_code_context_create_literal_expression (context, $1, src));
- g_object_unref (src);
- g_object_unref ($1);
- }
| simple_name
| parenthesized_expression
| member_access
Modified: trunk/vala/vala.h
==============================================================================
--- trunk/vala/vala.h (original)
+++ trunk/vala/vala.h Mon Mar 31 20:18:24 2008
@@ -41,7 +41,6 @@
#include <vala/valainvocationexpression.h>
#include <vala/valalambdaexpression.h>
#include <vala/valaliteral.h>
-#include <vala/valaliteralexpression.h>
#include <vala/valalocalvariabledeclaration.h>
#include <vala/valalockstatement.h>
#include <vala/valamemberaccess.h>
Modified: trunk/vala/valaattribute.vala
==============================================================================
--- trunk/vala/valaattribute.vala (original)
+++ trunk/vala/valaattribute.vala Mon Mar 31 20:18:24 2008
@@ -83,11 +83,9 @@
// FIXME: use hash table
foreach (NamedArgument arg in args) {
if (arg.name == name) {
- if (arg.argument is LiteralExpression) {
- var lit = ((LiteralExpression) arg.argument).literal;
- if (lit is StringLiteral) {
- return ((StringLiteral) lit).eval ();
- }
+ var lit = arg.argument as StringLiteral;
+ if (lit != null) {
+ return lit.eval ();
}
}
}
@@ -105,11 +103,9 @@
// FIXME: use hash table
foreach (NamedArgument arg in args) {
if (arg.name == name) {
- if (arg.argument is LiteralExpression) {
- var lit = ((LiteralExpression) arg.argument).literal;
- if (lit is IntegerLiteral) {
- return ((IntegerLiteral) lit).value.to_int ();
- }
+ var lit = arg.argument as IntegerLiteral;
+ if (lit != null) {
+ return lit.value.to_int ();
}
}
}
@@ -127,23 +123,21 @@
// FIXME: use hash table
foreach (NamedArgument arg in args) {
if (arg.name == name) {
- if (arg.argument is LiteralExpression) {
- var lit = ((LiteralExpression) arg.argument).literal;
- if (lit is RealLiteral) {
- return ((RealLiteral) lit).value.to_double ();
- } else if (lit is IntegerLiteral) {
- return ((IntegerLiteral) lit).value.to_int ();
- }
+ if (arg.argument is RealLiteral) {
+ var lit = (RealLiteral) arg.argument;
+ return lit.value.to_double ();
+ } else if (arg.argument is IntegerLiteral) {
+ var lit = (IntegerLiteral) arg.argument;
+ return lit.value.to_int ();
} else if (arg.argument is UnaryExpression) {
var unary = (UnaryExpression) arg.argument;
if (unary.operator == UnaryOperator.MINUS) {
- if (unary.inner is LiteralExpression) {
- var lit = ((LiteralExpression) unary.inner).literal;
- if (lit is RealLiteral) {
- return -((RealLiteral) lit).value.to_double ();
- } else if (lit is IntegerLiteral) {
- return -((IntegerLiteral) lit).value.to_int ();
- }
+ if (unary.inner is RealLiteral) {
+ var lit = (RealLiteral) unary.inner;
+ return -lit.value.to_double ();
+ } else if (unary.inner is IntegerLiteral) {
+ var lit = (IntegerLiteral) unary.inner;
+ return -lit.value.to_int ();
}
}
}
@@ -163,11 +157,9 @@
// FIXME: use hash table
foreach (NamedArgument arg in args) {
if (arg.name == name) {
- if (arg.argument is LiteralExpression) {
- var lit = ((LiteralExpression) arg.argument).literal;
- if (lit is BooleanLiteral) {
- return ((BooleanLiteral) lit).value;
- }
+ var lit = arg.argument as BooleanLiteral;
+ if (lit != null) {
+ return lit.value;
}
}
}
Modified: trunk/vala/valabooleanliteral.vala
==============================================================================
--- trunk/vala/valabooleanliteral.vala (original)
+++ trunk/vala/valabooleanliteral.vala Mon Mar 31 20:18:24 2008
@@ -1,6 +1,6 @@
/* valabooleanliteral.vala
*
- * Copyright (C) 2006-2007 JÃrg Billeter
+ * Copyright (C) 2006-2008 JÃrg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -54,4 +54,8 @@
return "false";
}
}
+
+ public override bool is_pure () {
+ return true;
+ }
}
Modified: trunk/vala/valacharacterliteral.vala
==============================================================================
--- trunk/vala/valacharacterliteral.vala (original)
+++ trunk/vala/valacharacterliteral.vala Mon Mar 31 20:18:24 2008
@@ -1,6 +1,6 @@
/* valacharacterliteral.vala
*
- * Copyright (C) 2006-2007 JÃrg Billeter, Raffaele Sandrini
+ * Copyright (C) 2006-2008 JÃrg Billeter, Raffaele Sandrini
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -77,4 +77,8 @@
public unichar get_char () {
return value.next_char ().get_char ();
}
+
+ public override bool is_pure () {
+ return true;
+ }
}
Modified: trunk/vala/valacodecontext.vala
==============================================================================
--- trunk/vala/valacodecontext.vala (original)
+++ trunk/vala/valacodecontext.vala Mon Mar 31 20:18:24 2008
@@ -743,12 +743,6 @@
return node;
}
- public LiteralExpression! create_literal_expression (Literal! literal, SourceReference source_reference = null) {
- var node = new LiteralExpression (literal, source_reference);
- node.code_binding = codegen.create_literal_expression_binding (node);
- return node;
- }
-
public ParenthesizedExpression! create_parenthesized_expression (Expression! inner, SourceReference source_reference) {
var node = new ParenthesizedExpression (inner, source_reference);
node.code_binding = codegen.create_parenthesized_expression_binding (node);
Modified: trunk/vala/valacodegenerator.vala
==============================================================================
--- trunk/vala/valacodegenerator.vala (original)
+++ trunk/vala/valacodegenerator.vala Mon Mar 31 20:18:24 2008
@@ -234,10 +234,6 @@
return null;
}
- public virtual CodeBinding create_literal_expression_binding (LiteralExpression! node) {
- return null;
- }
-
public virtual CodeBinding create_parenthesized_expression_binding (ParenthesizedExpression! node) {
return null;
}
Modified: trunk/vala/valacodevisitor.vala
==============================================================================
--- trunk/vala/valacodevisitor.vala (original)
+++ trunk/vala/valacodevisitor.vala Mon Mar 31 20:18:24 2008
@@ -468,14 +468,6 @@
}
/**
- * Visit operation called for literal expressions.
- *
- * @param expr a literal expression
- */
- public virtual void visit_literal_expression (LiteralExpression! expr) {
- }
-
- /**
* Visit operation called for parenthesized expressions.
*
* @param expr a parenthesized expression
Modified: trunk/vala/valaintegerliteral.vala
==============================================================================
--- trunk/vala/valaintegerliteral.vala (original)
+++ trunk/vala/valaintegerliteral.vala Mon Mar 31 20:18:24 2008
@@ -1,6 +1,6 @@
/* valaintegerliteral.vala
*
- * Copyright (C) 2006-2007 JÃrg Billeter
+ * Copyright (C) 2006-2008 JÃrg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -100,4 +100,8 @@
}
}
}
+
+ public override bool is_pure () {
+ return true;
+ }
}
Modified: trunk/vala/valaliteral.vala
==============================================================================
--- trunk/vala/valaliteral.vala (original)
+++ trunk/vala/valaliteral.vala Mon Mar 31 20:18:24 2008
@@ -1,6 +1,6 @@
/* valaliteral.vala
*
- * Copyright (C) 2006-2007 JÃrg Billeter
+ * Copyright (C) 2006-2008 JÃrg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -25,9 +25,8 @@
/**
* Base class for all literals in the source code.
*/
-public abstract class Vala.Literal : CodeNode {
- /**
- * Specifies the type of this literal.
- */
- public DataType static_type { get; set; }
+public abstract class Vala.Literal : Expression {
+ public override bool is_pure () {
+ return true;
+ }
}
Modified: trunk/vala/valanullliteral.vala
==============================================================================
--- trunk/vala/valanullliteral.vala (original)
+++ trunk/vala/valanullliteral.vala Mon Mar 31 20:18:24 2008
@@ -1,6 +1,6 @@
/* valanullliteral.vala
*
- * Copyright (C) 2006-2007 JÃrg Billeter
+ * Copyright (C) 2006-2008 JÃrg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -43,4 +43,8 @@
public override string! to_string () {
return "null";
}
+
+ public override bool is_pure () {
+ return true;
+ }
}
Modified: trunk/vala/valarealliteral.vala
==============================================================================
--- trunk/vala/valarealliteral.vala (original)
+++ trunk/vala/valarealliteral.vala Mon Mar 31 20:18:24 2008
@@ -1,6 +1,6 @@
/* valarealliteral.vala
*
- * Copyright (C) 2006 JÃrg Billeter
+ * Copyright (C) 2006-2008 JÃrg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -59,4 +59,8 @@
return "double";
}
+
+ public override bool is_pure () {
+ return true;
+ }
}
Modified: trunk/vala/valasemanticanalyzer.vala
==============================================================================
--- trunk/vala/valasemanticanalyzer.vala (original)
+++ trunk/vala/valasemanticanalyzer.vala Mon Mar 31 20:18:24 2008
@@ -1166,8 +1166,8 @@
}
}
- private int create_sizes_from_initializer_list (InitializerList! il, int rank, Gee.List<LiteralExpression>! sl) {
- var init = new LiteralExpression (new IntegerLiteral (il.size.to_string (), il.source_reference), il.source_reference);
+ private int create_sizes_from_initializer_list (InitializerList! il, int rank, Gee.List<Literal>! sl) {
+ var init = new IntegerLiteral (il.size.to_string (), il.source_reference);
init.accept (this);
sl.add (init);
@@ -1220,7 +1220,7 @@
e.accept (this);
}
- var calc_sizes = new ArrayList<LiteralExpression> ();
+ var calc_sizes = new ArrayList<Literal> ();
if (initlist != null) {
initlist.expected_type = new ArrayType (expr.element_type, expr.rank, expr.source_reference);
initlist.expected_type.add_type_argument (expr.element_type);
@@ -1312,10 +1312,6 @@
expr.static_type = new NullType (expr.source_reference);
}
- public override void visit_literal_expression (LiteralExpression! expr) {
- expr.static_type = expr.literal.static_type;
- }
-
private DataType get_static_type_for_symbol (Symbol! sym) {
if (sym is Field) {
var f = (Field) sym;
@@ -1831,10 +1827,9 @@
}
if (diag && prev_arg != null) {
- var format_arg = prev_arg;
- if (format_arg is LiteralExpression) {
- var format_lit = (StringLiteral) ((LiteralExpression) format_arg).literal;
- format_lit.value = "\"%s:%d: %s".printf (Path.get_basename (expr.source_reference.file.filename), expr.source_reference.first_line, format_lit.value.offset (1));
+ var format_arg = prev_arg as StringLiteral;
+ if (format_arg != null) {
+ format_arg.value = "\"%s:%d: %s".printf (Path.get_basename (expr.source_reference.file.filename), expr.source_reference.first_line, format_arg.value.offset (1));
}
}
@@ -2359,7 +2354,7 @@
}
var old_value = new MemberAccess (ma.inner, ma.member_name, expr.inner.source_reference);
- var bin = new BinaryExpression (expr.operator == UnaryOperator.INCREMENT ? BinaryOperator.PLUS : BinaryOperator.MINUS, old_value, new LiteralExpression (new IntegerLiteral ("1")), expr.source_reference);
+ var bin = new BinaryExpression (expr.operator == UnaryOperator.INCREMENT ? BinaryOperator.PLUS : BinaryOperator.MINUS, old_value, new IntegerLiteral ("1"), expr.source_reference);
var assignment = context.create_assignment (ma, bin, AssignmentOperator.SIMPLE, expr.source_reference);
var parenthexp = new ParenthesizedExpression (assignment, expr.source_reference);
Modified: trunk/vala/valastringliteral.vala
==============================================================================
--- trunk/vala/valastringliteral.vala (original)
+++ trunk/vala/valastringliteral.vala Mon Mar 31 20:18:24 2008
@@ -1,6 +1,6 @@
/* valastringliteral.vala
*
- * Copyright (C) 2006-2007 JÃrg Billeter
+ * Copyright (C) 2006-2008 JÃrg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -62,4 +62,8 @@
public override void accept (CodeVisitor! visitor) {
visitor.visit_string_literal (this);
}
+
+ public override bool is_pure () {
+ return true;
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]