vala r1165 - in trunk: . gobject vala



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]