Skip to content

Instantly share code, notes, and snippets.

@rktoomey
Created May 11, 2011 16:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rktoomey/966803 to your computer and use it in GitHub Desktop.
Save rktoomey/966803 to your computer and use it in GitHub Desktop.
Trying to get ScalaSig for class in REPL
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