Created
May 11, 2011 16:24
-
-
Save rktoomey/966803 to your computer and use it in GitHub Desktop.
Trying to get ScalaSig for class in REPL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Welcome to Scala version 2.9.0.RC4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_24). | |
Type in expressions to have them evaluated. | |
Type :help for more information. | |
scala> case class Foo(x: String) { | |
| def distinctiveMethodName = "Hello" | |
| } | |
defined class Foo | |
scala> val clazz = classOf[Foo] | |
clazz: java.lang.Class[Foo] = class Foo | |
scala> println(clazz) | |
class $line1.$read$$iw$$iw$Foo | |
scala> val cfn = Class.forName("$line1.$read") | |
cfn: java.lang.Class[_] = class $line1.$read | |
scala> cfn.getDeclaredMethods.filter(_.getName == "distinctiveMethodName") | |
res1: Array[java.lang.reflect.Method] = Array() | |
scala> cfn.getDeclaredMethods.filter(_.getName == "toString") | |
res2: Array[java.lang.reflect.Method] = Array() | |
scala> cfn.getDeclaredMethods | |
res3: Array[java.lang.reflect.Method] = Array() | |
scala> Class.forName("$line1.$read$$iw$$iw$Foo").getDeclaredMethods | |
res8: Array[java.lang.reflect.Method] = Array(public boolean Foo.equals(java.lang.Object), public java.lang.String Foo.toString(), public int Foo.hashCode(), public Foo Foo.copy(java.lang.String), public java.lang.String Foo.x(), private final boolean Foo.gd1$1(java.lang.String), public java.lang.String Foo.productPrefix(), public int Foo.productArity(), public java.lang.Object Foo.productElement(int), public scala.collection.Iterator Foo.productIterator(), public scala.collection.Iterator Foo.productElements(), public boolean Foo.canEqual(java.lang.Object), public java.lang.String Foo.copy$default$1(), public java.lang.String Foo.distinctiveMethodName()) | |
scala> import tools.scalap.scalax.rules.scalasig._ | |
import tools.scalap.scalax.rules.scalasig._ | |
scala> println(ScalaSigParser.parse(cfn)) | |
Some(ScalaSig version 5.0 | |
0: ObjectSymbol($read, owner=$line1, flags=402, info=5 ) | |
1: $read | |
2: $line1 | |
3: $line1 | |
4: NoSymbol | |
5: TypeRefType(ThisType($line1),ClassSymbol($read, owner=$line1, flags=402, info=9 ,None),List()) | |
6: ThisType($line1) | |
7: ClassSymbol($read, owner=$line1, flags=402, info=9 ,None) | |
8: $read | |
9: ClassInfoType(ClassSymbol($read, owner=$line1, flags=402, info=9 ,None),List(TypeRefType(ThisType(java.lang),java.lang.Object,List()), TypeRefType(ThisType(scala),scala.ScalaObject,List()))) | |
10: TypeRefType(ThisType(java.lang),java.lang.Object,List()) | |
11: ThisType(java.lang) | |
12: java.lang | |
13: lang | |
14: java | |
15: java | |
16: java.lang.Object | |
17: Object | |
18: TypeRefType(ThisType(scala),scala.ScalaObject,List()) | |
19: ThisType(scala) | |
20: scala | |
21: scala | |
22: scala.ScalaObject | |
23: ScalaObject | |
24: MethodSymbol(<init>, owner=7, flags=200, info=26 ,None) | |
25: <init> | |
26: MethodType(TypeRefType(ThisType($line1),ClassSymbol($read, owner=$line1, flags=402, info=9 ,None),List()),List()) | |
27: ObjectSymbol($iw, owner=7, flags=402, info=29 ) | |
28: $iw | |
29: TypeRefType(ThisType(ClassSymbol($read, owner=$line1, flags=402, info=9 ,None)),ClassSymbol($iw, owner=7, flags=402, info=33 ,None),List()) | |
30: ThisType(ClassSymbol($read, owner=$line1, flags=402, info=9 ,None)) | |
31: ClassSymbol($iw, owner=7, flags=402, info=33 ,None) | |
32: $iw | |
33: ClassInfoType(ClassSymbol($iw, owner=7, flags=402, info=33 ,None),List(TypeRefType(ThisType(java.lang),java.lang.Object,List()), TypeRefType(ThisType(scala),scala.ScalaObject,List()))) | |
34: MethodSymbol(<init>, owner=31, flags=200, info=35 ,None) | |
35: MethodType(TypeRefType(ThisType(ClassSymbol($read, owner=$line1, flags=402, info=9 ,None)),ClassSymbol($iw, owner=7, flags=402, info=33 ,None),List()),List()) | |
36: ObjectSymbol($iw, owner=31, flags=402, info=37 ) | |
37: TypeRefType(ThisType(ClassSymbol($iw, owner=7, flags=402, info=33 ,None)),ClassSymbol($iw, owner=31, flags=402, info=40 ,None),List()) | |
38: ThisType(ClassSymbol($iw, owner=7, flags=402, info=33 ,None)) | |
39: ClassSymbol($iw, owner=31, flags=402, info=40 ,None) | |
40: ClassInfoType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None),List(TypeRefType(ThisType(java.lang),java.lang.Object,List()), TypeRefType(ThisType(scala),scala.ScalaObject,List()))) | |
41: MethodSymbol(<init>, owner=39, flags=200, info=42 ,None) | |
42: MethodType(TypeRefType(ThisType(ClassSymbol($iw, owner=7, flags=402, info=33 ,None)),ClassSymbol($iw, owner=31, flags=402, info=40 ,None),List()),List()) | |
43: ClassSymbol(Foo, owner=39, flags=40, info=45 ,None) | |
44: Foo | |
45: ClassInfoType(ClassSymbol(Foo, owner=39, flags=40, info=45 ,None),List(TypeRefType(ThisType(java.lang),java.lang.Object,List()), TypeRefType(ThisType(scala),scala.ScalaObject,List()), TypeRefType(ThisType(scala),scala.Product,List()), TypeRefType(ThisType(scala),scala.Serializable,List()))) | |
46: TypeRefType(ThisType(scala),scala.Product,List()) | |
47: scala.Product | |
48: Product | |
49: TypeRefType(ThisType(scala),scala.Serializable,List()) | |
50: scala.Serializable | |
51: Serializable | |
52: MethodSymbol(x, owner=43, flags=29400200, info=54 ,None) | |
53: x | |
54: NullaryMethodType(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List())) | |
55: TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()) | |
56: SingleType(ThisType(scala),scala.Predef) | |
57: scala.Predef | |
58: Predef | |
59: scala.Predef.String | |
60: String | |
61: scala.Predef | |
62: MethodSymbol(x , owner=43, flags=21080004, info=55 ,None) | |
63: x | |
64: MethodSymbol(<init>, owner=43, flags=200, info=65 ,None) | |
65: MethodType(TypeRefType(ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)),ClassSymbol(Foo, owner=39, flags=40, info=45 ,None),List()),List(MethodSymbol(x, owner=64, flags=2000, info=55 ,None))) | |
66: TypeRefType(ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)),ClassSymbol(Foo, owner=39, flags=40, info=45 ,None),List()) | |
67: ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)) | |
68: MethodSymbol(x, owner=64, flags=2000, info=55 ,None) | |
69: MethodSymbol(distinctiveMethodName, owner=43, flags=200, info=71 ,None) | |
70: distinctiveMethodName | |
71: NullaryMethodType(TypeRefType(ThisType(java.lang),java.lang.String,List())) | |
72: TypeRefType(ThisType(java.lang),java.lang.String,List()) | |
73: java.lang.String | |
74: MethodSymbol(copy, owner=43, flags=200200, info=76 ,None) | |
75: copy | |
76: MethodType(TypeRefType(ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)),ClassSymbol(Foo, owner=39, flags=40, info=45 ,None),List()),List(MethodSymbol(x, owner=74, flags=2002000, info=55 ,None))) | |
77: MethodSymbol(x, owner=74, flags=2002000, info=55 ,None) | |
78: MethodSymbol(copy$default$1, owner=43, flags=2200200, info=80 ,None) | |
79: copy$default$1 | |
80: NullaryMethodType(AnnotatedType(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()),List(82))) | |
81: AnnotatedType(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()),List(82)) | |
82: AnnotInfo(List(83)) | |
83: TypeRefType(ThisType(scala.annotation.unchecked),scala.annotation.unchecked.uncheckedVariance,List()) | |
84: ThisType(scala.annotation.unchecked) | |
85: scala.annotation.unchecked | |
86: unchecked | |
87: scala.annotation | |
88: annotation | |
89: scala.annotation.unchecked.uncheckedVariance | |
90: uncheckedVariance | |
91: MethodSymbol(hashCode, owner=43, flags=220, info=93 ,None) | |
92: hashCode | |
93: MethodType(TypeRefType(ThisType(scala),scala.Int,List()),List()) | |
94: TypeRefType(ThisType(scala),scala.Int,List()) | |
95: scala.Int | |
96: Int | |
97: MethodSymbol(toString, owner=43, flags=220, info=99 ,None) | |
98: toString | |
99: MethodType(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()),List()) | |
100: MethodSymbol(equals, owner=43, flags=220, info=102 ,None) | |
101: equals | |
102: MethodType(TypeRefType(ThisType(scala),scala.Boolean,List()),List(MethodSymbol(x$1, owner=100, flags=202000, info=108 ,None))) | |
103: TypeRefType(ThisType(scala),scala.Boolean,List()) | |
104: scala.Boolean | |
105: Boolean | |
106: MethodSymbol(x$1, owner=100, flags=202000, info=108 ,None) | |
107: x$1 | |
108: TypeRefType(ThisType(scala),scala.Any,List()) | |
109: scala.Any | |
110: Any | |
111: MethodSymbol(productPrefix, owner=43, flags=220, info=71 ,None) | |
112: productPrefix | |
113: MethodSymbol(productArity, owner=43, flags=220, info=115 ,None) | |
114: productArity | |
115: NullaryMethodType(TypeRefType(ThisType(scala),scala.Int,List())) | |
116: MethodSymbol(productElement, owner=43, flags=220, info=118 ,None) | |
117: productElement | |
118: MethodType(TypeRefType(ThisType(scala),scala.Any,List()),List(MethodSymbol(x$1, owner=116, flags=202000, info=94 ,None))) | |
119: MethodSymbol(x$1, owner=116, flags=202000, info=94 ,None) | |
120: MethodSymbol(canEqual, owner=43, flags=220, info=122 ,None) | |
121: canEqual | |
122: MethodType(TypeRefType(ThisType(scala),scala.Boolean,List()),List(MethodSymbol(x$1, owner=120, flags=202000, info=108 ,None))) | |
123: MethodSymbol(x$1, owner=120, flags=202000, info=108 ,None) | |
124: ObjectSymbol(Foo, owner=39, flags=200402, info=126 ) | |
125: Foo | |
126: TypeRefType(ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)),ClassSymbol(Foo, owner=39, flags=200402, info=128 ,None),List()) | |
127: ClassSymbol(Foo, owner=39, flags=200402, info=128 ,None) | |
128: ClassInfoType(ClassSymbol(Foo, owner=39, flags=200402, info=128 ,None),List(TypeRefType(ThisType(scala.runtime),scala.runtime.AbstractFunction1,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)),ClassSymbol(Foo, owner=39, flags=40, info=45 ,None),List()))), TypeRefType(ThisType(scala),scala.ScalaObject,List()), TypeRefType(ThisType(scala),scala.Serializable,List()))) | |
129: TypeRefType(ThisType(scala.runtime),scala.runtime.AbstractFunction1,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)),ClassSymbol(Foo, owner=39, flags=40, info=45 ,None),List()))) | |
130: ThisType(scala.runtime) | |
131: scala.runtime | |
132: runtime | |
133: scala.runtime.AbstractFunction1 | |
134: AbstractFunction1 | |
135: MethodSymbol(<init>, owner=127, flags=200, info=136 ,None) | |
136: MethodType(TypeRefType(ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)),ClassSymbol(Foo, owner=39, flags=200402, info=128 ,None),List()),List()) | |
137: MethodSymbol(toString, owner=127, flags=222, info=138 ,None) | |
138: MethodType(TypeRefType(ThisType(java.lang),java.lang.String,List()),List()) | |
139: MethodSymbol(apply, owner=127, flags=200240, info=141 ,None) | |
140: apply | |
141: MethodType(TypeRefType(ThisType(ClassSymbol($iw, owner=31, flags=402, info=40 ,None)),ClassSymbol(Foo, owner=39, flags=40, info=45 ,None),List()),List(MethodSymbol(x, owner=139, flags=2000, info=55 ,None))) | |
142: MethodSymbol(x, owner=139, flags=2000, info=55 ,None) | |
143: MethodSymbol(unapply, owner=127, flags=200240, info=145 ,None) | |
144: unapply | |
145: MethodType(TypeRefType(ThisType(scala),scala.Option,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()))),List(MethodSymbol(x$0, owner=143, flags=2000, info=66 ,None))) | |
146: TypeRefType(ThisType(scala),scala.Option,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()))) | |
147: scala.Option | |
148: Option | |
149: MethodSymbol(x$0, owner=143, flags=2000, info=66 ,None) | |
150: x$0 | |
151: MethodSymbol(readResolve, owner=127, flags=208, info=153 ,None) | |
152: readResolve | |
153: MethodType(TypeRefType(ThisType(java.lang),java.lang.Object,List()),List())) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment