From ce867c74572b51cfcb6ac3e3bfa9dce36cc0b638 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Fri, 8 Feb 2013 14:08:54 +0100 Subject: term and type reftrees are now reified uniformly Top-level (i.e. owned by a package) => Ident(symbol) Nested (i.e. owned by an object or a package object) => Select(owner, symbol) Inner (i.e. owned by a static class) => selectTerm/selectType(owner, name) Non-locatable (i.e. everything else) => see GenTrees.scala for more details Changes w.r.t the previous approaches: * Top-level refs are no longer reified as Select(This(package), symbol). Proposed reification scheme is as resistant to resetAttrs as previous one, but is at the same time much shorter. * Refs to definitions from package objects are no longer Ident(symbol). Otherwise reflective compilation of things like `_ :: _` fails. * Contents of Predef._ and scala._ are no longer treated specially. This increases the size of reificode, but is more hygienic. --- test/files/run/showraw_tree_types_ids.check | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'test/files/run/showraw_tree_types_ids.check') diff --git a/test/files/run/showraw_tree_types_ids.check b/test/files/run/showraw_tree_types_ids.check index 92ee45a1e6..fccb81d8df 100644 --- a/test/files/run/showraw_tree_types_ids.check +++ b/test/files/run/showraw_tree_types_ids.check @@ -1,10 +1,12 @@ -Apply[1](Select[2](New[1](TypeTree[1]().setOriginal(AppliedTypeTree(Ident[3](scala.collection.immutable.HashMap#), List(TypeTree[4]().setOriginal(Ident[4](newTypeName("String")#)), TypeTree[4]().setOriginal(Ident[4](newTypeName("String")#)))))), nme.CONSTRUCTOR#), List()) -[1] TypeRef(ThisType(scala.collection.immutable#), scala.collection.immutable.HashMap#, List(TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List()), TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List()))) -[2] MethodType(List(), TypeRef(ThisType(scala.collection.immutable#), scala.collection.immutable.HashMap#, List(TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List()), TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List())))) +Apply[1](Select[2](New[1](TypeTree[1]().setOriginal(AppliedTypeTree(Ident[3](scala.collection.immutable.HashMap#), List(TypeTree[4]().setOriginal(Select[4](Ident[5](scala.Predef#), newTypeName("String")#)), TypeTree[4]().setOriginal(Select[4](Ident[5](scala.Predef#), newTypeName("String")#)))))), nme.CONSTRUCTOR#), List()) +[1] TypeRef(ThisType(scala.collection.immutable#), scala.collection.immutable.HashMap#, List(TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List()), TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List()))) +[2] MethodType(List(), TypeRef(ThisType(scala.collection.immutable#), scala.collection.immutable.HashMap#, List(TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List()), TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List())))) [3] TypeRef(ThisType(scala.collection.immutable#), scala.collection.immutable.HashMap#, List()) -[4] TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List()) -Apply[5](Select[6](New[5](TypeTree[5]().setOriginal(AppliedTypeTree(Ident[7](scala.collection.mutable.HashMap#), List(TypeTree[4]().setOriginal(Ident[4](newTypeName("String")#)), TypeTree[4]().setOriginal(Ident[4](newTypeName("String")#)))))), nme.CONSTRUCTOR#), List()) -[4] TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List()) -[5] TypeRef(ThisType(scala.collection.mutable#), scala.collection.mutable.HashMap#, List(TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List()), TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List()))) -[6] MethodType(List(), TypeRef(ThisType(scala.collection.mutable#), scala.collection.mutable.HashMap#, List(TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List()), TypeRef(ThisType(scala.Predef#), newTypeName("String")#, List())))) -[7] TypeRef(ThisType(scala.collection.mutable#), scala.collection.mutable.HashMap#, List()) +[4] TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List()) +[5] SingleType(ThisType(scala#), scala.Predef#) +Apply[6](Select[7](New[6](TypeTree[6]().setOriginal(AppliedTypeTree(Ident[8](scala.collection.mutable.HashMap#), List(TypeTree[4]().setOriginal(Select[4](Ident[5](scala.Predef#), newTypeName("String")#)), TypeTree[4]().setOriginal(Select[4](Ident[5](scala.Predef#), newTypeName("String")#)))))), nme.CONSTRUCTOR#), List()) +[4] TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List()) +[5] SingleType(ThisType(scala#), scala.Predef#) +[6] TypeRef(ThisType(scala.collection.mutable#), scala.collection.mutable.HashMap#, List(TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List()), TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List()))) +[7] MethodType(List(), TypeRef(ThisType(scala.collection.mutable#), scala.collection.mutable.HashMap#, List(TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List()), TypeRef(SingleType(ThisType(scala#), scala.Predef#), newTypeName("String")#, List())))) +[8] TypeRef(ThisType(scala.collection.mutable#), scala.collection.mutable.HashMap#, List()) -- cgit v1.2.3