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