summaryrefslogtreecommitdiff
path: root/sources/meta
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-04-23 14:17:41 +0000
committerpaltherr <paltherr@epfl.ch>2003-04-23 14:17:41 +0000
commit06238329c5491150c655c26a15407a3550403479 (patch)
tree10c82a497d4e9bb99ec76bf7c233873ddce728f2 /sources/meta
parentc397f80f8b2e960a413d5113b1bc95a1da7f617a (diff)
downloadscala-06238329c5491150c655c26a15407a3550403479.tar.gz
scala-06238329c5491150c655c26a15407a3550403479.tar.bz2
scala-06238329c5491150c655c26a15407a3550403479.zip
- Added checking of linked fields
Diffstat (limited to 'sources/meta')
-rw-r--r--sources/meta/scalac/checkers/MetaCheckTreeNodes.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/sources/meta/scalac/checkers/MetaCheckTreeNodes.java b/sources/meta/scalac/checkers/MetaCheckTreeNodes.java
index eeb2dc83e6..9fb2f2018d 100644
--- a/sources/meta/scalac/checkers/MetaCheckTreeNodes.java
+++ b/sources/meta/scalac/checkers/MetaCheckTreeNodes.java
@@ -14,6 +14,7 @@ import meta.scalac.ast.TreeKind;
import meta.scalac.ast.TreeType;
import meta.scalac.ast.TreeNode;
import meta.scalac.ast.TreeField;
+import meta.scalac.ast.TreeFieldLink;
public class MetaCheckTreeNodes extends AbstractTreeCaseExpander {
@@ -26,6 +27,14 @@ public class MetaCheckTreeNodes extends AbstractTreeCaseExpander {
TreeField field = node.fields[i];
printCheckField(node, field.type, field.name, "i");
}
+ if (node.hasLinkedFields()) {
+ writer.println("Symbol symbol = tree.symbol();");
+ writer.print("if (symbol != null)").lbrace();
+ for (int i = 0; i < node.fields.length; i++)
+ if (node.fields[i].link != null)
+ printCheckFieldLink(node.fields[i]);
+ writer.rbrace();
+ }
}
printCheckNode(node);
writer.println("return;");
@@ -93,6 +102,14 @@ public class MetaCheckTreeNodes extends AbstractTreeCaseExpander {
}
}
+ private void printCheckFieldLink(TreeField field) {
+ String getter = field.link.getLink();
+ writer.println("assert symbol." +getter+ " == " +field+ " :").indent();
+ writer.println("\"symbol and tree " + field.link + " differ: \"+" +
+ "symbol." + getter + "+\" != \"+" +field+ ";");
+ writer.undent();
+ }
+
private void printNullValue(TreeNode node, String field) {
String expanded = getExpandedField(field);
writer.print("\"field " +expanded+ " of class " +node+ " is null\"");