From 105ddb769e97e0f2957648ab5826c9e326fe781f Mon Sep 17 00:00:00 2001 From: schinz Date: Mon, 14 Mar 2005 16:11:21 +0000 Subject: - added a new kind of literal, SYMBOL_NAME, whi... - added a new kind of literal, SYMBOL_NAME, which is a string literal whose value is the name of the attached symbol --- sources/scalac/atree/AConstant.java | 14 ++++++++++++++ sources/scalac/atree/ATreePrinter.java | 2 ++ sources/scalac/atree/ATreeTyper.java | 1 + 3 files changed, 17 insertions(+) (limited to 'sources/scalac/atree') diff --git a/sources/scalac/atree/AConstant.java b/sources/scalac/atree/AConstant.java index 9bb2eb29b4..2dcc80bbaf 100644 --- a/sources/scalac/atree/AConstant.java +++ b/sources/scalac/atree/AConstant.java @@ -9,6 +9,7 @@ package scalac.atree; import scalac.util.Debug; +import scalac.symtab.Symbol; /** This class represents a constant. */ public class AConstant { @@ -26,6 +27,7 @@ public class AConstant { public case FLOAT(float value); public case DOUBLE(double value); public case STRING(String value); + public case SYMBOL_NAME(Symbol value); public case NULL; public case ZERO; @@ -54,6 +56,7 @@ public class AConstant { case DOUBLE(_): return ATypeKind.R8; case STRING(_): + case SYMBOL_NAME(_): return ATypeKind.STR; case NULL: return ATypeKind.NULL; @@ -252,6 +255,8 @@ public class AConstant { return String.valueOf(value); case STRING(String value): return value; + case SYMBOL_NAME(Symbol value): + return value.name.toString(); case NULL: return String.valueOf(null); default: @@ -335,6 +340,13 @@ public class AConstant { default: return false; } + case SYMBOL_NAME(Symbol ivalue): + switch (that) { + case SYMBOL_NAME(Symbol avalue): + return ivalue == avalue; + default: + return false; + } case NULL: return false; case ZERO: @@ -370,6 +382,8 @@ public class AConstant { return (int)(bits ^ (bits >>> 32)); case STRING(String value): return value.hashCode(); + case SYMBOL_NAME(Symbol value): + return value.hashCode(); case NULL: return 0; case ZERO: diff --git a/sources/scalac/atree/ATreePrinter.java b/sources/scalac/atree/ATreePrinter.java index 022f78aed5..fb0a108a99 100644 --- a/sources/scalac/atree/ATreePrinter.java +++ b/sources/scalac/atree/ATreePrinter.java @@ -534,6 +534,8 @@ public class ATreePrinter { return print(value); case STRING(String value): return print('\"').print(SourceRepresentation.escape(value)).print('\"'); + case SYMBOL_NAME(Symbol value): + return print('\"').print(SourceRepresentation.escape(value.name.toString())).print('\"'); case NULL: return print("null"); case ZERO: diff --git a/sources/scalac/atree/ATreeTyper.java b/sources/scalac/atree/ATreeTyper.java index 4fa19f622f..06133db15f 100644 --- a/sources/scalac/atree/ATreeTyper.java +++ b/sources/scalac/atree/ATreeTyper.java @@ -196,6 +196,7 @@ public class ATreeTyper { case LONG(_) : return definitions.long_TYPE(); case FLOAT(_) : return definitions.float_TYPE(); case DOUBLE(_) : return definitions.double_TYPE(); + case SYMBOL_NAME(_): case STRING(_) : return definitions.STRING_TYPE(); case NULL : return definitions.ALLREF_TYPE(); case ZERO : return definitions.ALL_TYPE(); -- cgit v1.2.3