Created
April 1, 2011 13:09
-
-
Save rktoomey/898115 to your computer and use it in GitHub Desktop.
Ways to look at a compiled Scala class
This file contains 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
rose@marzipan:~/workspace/salat/target/scala_2.8.1/test-classes/com/novus/salat/test/model$ scalap -cp . "Maud" | |
package com.novus.salat.test.model | |
@scala.serializable | |
case class Maud(swept : scala.Predef.String, out : scala.Predef.String) extends java.lang.Object with scala.ScalaObject with scala.Product { | |
val swept : scala.Predef.String = { /* compiled code */ } | |
val out : scala.Predef.String = { /* compiled code */ } | |
@com.novus.salat.annotations.raw.Persist | |
val toSea : scala.Predef.String = { /* compiled code */ } | |
def copy(swept : scala.Predef.String, out : scala.Predef.String) : com.novus.salat.test.model.Maud = { /* compiled code */ } | |
override def hashCode() : scala.Int = { /* compiled code */ } | |
override def toString() : scala.Predef.String = { /* compiled code */ } | |
override def equals(x$1 : scala.Any) : scala.Boolean = { /* compiled code */ } | |
override def productPrefix : java.lang.String = { /* compiled code */ } | |
override def productArity : scala.Int = { /* compiled code */ } | |
override def productElement(x$1 : scala.Int) : scala.Any = { /* compiled code */ } | |
override def canEqual(x$1 : scala.Any) : scala.Boolean = { /* compiled code */ } | |
} | |
rose@marzipan:~/workspace/salat/target/scala_2.8.1/test-classes/com/novus/salat/test/model$ scalap -cp . "Maud$" | |
package com.novus.salat.test.model; | |
final class Maud$ extends scala.runtime.AbstractFunction2 with java.io.Serializable with scala.ScalaObject { | |
def this(): scala.Unit; | |
def apply(scala.Any, scala.Any): scala.Any; | |
def readResolve(): scala.Any; | |
def apply(java.lang.String, java.lang.String): com.novus.salat.test.model.Maud; | |
def unapply(com.novus.salat.test.model.Maud): scala.Option; | |
} | |
object Maud$ { | |
final val MODULE$: com.novus.salat.test.model.Maud$; | |
} | |
rose@marzipan:~/workspace/salat/target/scala_2.8.1/test-classes/com/novus/salat/test/model$ javap -classpath . "Maud" | |
Compiled from "TestModel.scala" | |
public class com.novus.salat.test.model.Maud extends java.lang.Object implements scala.ScalaObject,scala.Product,java.io.Serializable{ | |
public static final scala.Function1 tupled(); | |
public static final scala.Function1 curry(); | |
public static final scala.Function1 curried(); | |
public scala.collection.Iterator productIterator(); | |
public scala.collection.Iterator productElements(); | |
public java.lang.String copy$default$2(); | |
public java.lang.String copy$default$1(); | |
public java.lang.String swept(); | |
public java.lang.String out(); | |
public java.lang.String toSea(); | |
public com.novus.salat.test.model.Maud copy(java.lang.String, java.lang.String); | |
public int hashCode(); | |
public java.lang.String toString(); | |
public boolean equals(java.lang.Object); | |
public java.lang.String productPrefix(); | |
public int productArity(); | |
public java.lang.Object productElement(int); | |
public boolean canEqual(java.lang.Object); | |
public com.novus.salat.test.model.Maud(java.lang.String, java.lang.String); | |
} | |
rose@marzipan:~/workspace/salat/target/scala_2.8.1/test-classes/com/novus/salat/test/model$ javap -classpath . "Maud$" | |
Compiled from "TestModel.scala" | |
public final class com.novus.salat.test.model.Maud$ extends scala.runtime.AbstractFunction2 implements scala.ScalaObject,java.io.Serializable{ | |
public static final com.novus.salat.test.model.Maud$ MODULE$; | |
public static {}; | |
public scala.Option unapply(com.novus.salat.test.model.Maud); | |
public com.novus.salat.test.model.Maud apply(java.lang.String, java.lang.String); | |
public java.lang.Object readResolve(); | |
public java.lang.Object apply(java.lang.Object, java.lang.Object); | |
} | |
rose@marzipan:~/workspace/salat/target/scala_2.8.1/test-classes/com/novus/salat/test/model$ scalap -classpath . "Maud" | |
package com.novus.salat.test.model | |
@scala.serializable | |
case class Maud(swept : scala.Predef.String, out : scala.Predef.String) extends java.lang.Object with scala.ScalaObject with scala.Product { | |
val swept : scala.Predef.String = { /* compiled code */ } | |
val out : scala.Predef.String = { /* compiled code */ } | |
val toSea : scala.Predef.String = { /* compiled code */ } | |
def copy(swept : scala.Predef.String, out : scala.Predef.String) : com.novus.salat.test.model.Maud = { /* compiled code */ } | |
override def hashCode() : scala.Int = { /* compiled code */ } | |
override def toString() : scala.Predef.String = { /* compiled code */ } | |
override def equals(x$1 : scala.Any) : scala.Boolean = { /* compiled code */ } | |
override def productPrefix : java.lang.String = { /* compiled code */ } | |
override def productArity : scala.Int = { /* compiled code */ } | |
override def productElement(x$1 : scala.Int) : scala.Any = { /* compiled code */ } | |
override def canEqual(x$1 : scala.Any) : scala.Boolean = { /* compiled code */ } | |
} | |
rose@marzipan:~/workspace/salat/target/scala_2.8.1/test-classes/com/novus/salat/test/model$ scalap -classpath . "Maud$" | |
package com.novus.salat.test.model; | |
final class Maud$ extends scala.runtime.AbstractFunction2 with java.io.Serializable with scala.ScalaObject { | |
def this(): scala.Unit; | |
def apply(scala.Any, scala.Any): scala.Any; | |
def readResolve(): scala.Any; | |
def apply(java.lang.String, java.lang.String): com.novus.salat.test.model.Maud; | |
def unapply(com.novus.salat.test.model.Maud): scala.Option; | |
} | |
object Maud$ { | |
final val MODULE$: com.novus.salat.test.model.Maud$; | |
} | |
260 [Thread-109] INFO com.novus.salat.Context$$anon$1 - PATH: %s | |
NOT PRIVATE | |
[INDEX] Name isCaseAccessor isInConstructor | |
[0] swept true false | |
[1] out true false | |
[2] <init> false false | |
[3] toSea false false | |
[4] copy false false | |
[5] copy$default$1 false false | |
[6] copy$default$2 false false | |
[7] hashCode false false | |
[8] toString false false | |
[9] equals false false | |
[10] productPrefix false false | |
[11] productArity false false | |
[12] productElement false false | |
[13] canEqual false false | |
PRIVATE | |
[INDEX] Name isCaseAccessor isInConstructor | |
[14] swept true false | |
[15] out true false | |
[16] toSea false false | |
479 [Thread-197] INFO com.novus.salat.test.PersistAnnotationSpec - ScalaSig version 5.0 | |
0: ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None) | |
1: Maud | |
2: com.novus.salat.test.model | |
3: model | |
4: com.novus.salat.test | |
5: test | |
6: com.novus.salat | |
7: salat | |
8: com.novus | |
9: novus | |
10: com | |
11: com | |
12: NoSymbol | |
13: ClassInfoType(ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None),List(TypeRefType(ThisType(java.lang),java.lang.Object,List()), TypeRefType(ThisType(scala),scala.ScalaObject,List()), TypeRefType(ThisType(scala),scala.Product,List()))) | |
14: TypeRefType(ThisType(java.lang),java.lang.Object,List()) | |
15: ThisType(java.lang) | |
16: java.lang | |
17: lang | |
18: java | |
19: java | |
20: java.lang.Object | |
21: Object | |
22: TypeRefType(ThisType(scala),scala.ScalaObject,List()) | |
23: ThisType(scala) | |
24: scala | |
25: scala | |
26: scala.ScalaObject | |
27: ScalaObject | |
28: TypeRefType(ThisType(scala),scala.Product,List()) | |
29: scala.Product | |
30: Product | |
31: MethodSymbol(swept, owner=0, flags=29400200, info=33 ,None) | |
32: swept | |
33: PolyType(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()),List()) | |
34: TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()) | |
35: SingleType(ThisType(scala),scala.Predef) | |
36: scala.Predef | |
37: Predef | |
38: scala.Predef.String | |
39: String | |
40: scala.Predef | |
41: MethodSymbol(swept , owner=0, flags=21080004, info=34 ,None) | |
42: swept | |
43: MethodSymbol(out, owner=0, flags=29400200, info=33 ,None) | |
44: out | |
45: MethodSymbol(out , owner=0, flags=21080004, info=34 ,None) | |
46: out | |
47: MethodSymbol(<init>, owner=0, flags=200, info=49 ,None) | |
48: <init> | |
49: MethodType(TypeRefType(ThisType(com.novus.salat.test.model),ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None),List()),List(MethodSymbol(swept, owner=47, flags=2000, info=34 ,None), MethodSymbol(out, owner=47, flags=2000, info=34 ,None))) | |
50: TypeRefType(ThisType(com.novus.salat.test.model),ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None),List()) | |
51: ThisType(com.novus.salat.test.model) | |
52: MethodSymbol(swept, owner=47, flags=2000, info=34 ,None) | |
53: MethodSymbol(out, owner=47, flags=2000, info=34 ,None) | |
54: MethodSymbol(toSea, owner=0, flags=8400200, info=33 ,None) | |
55: toSea | |
56: MethodSymbol(toSea , owner=0, flags=80004, info=34 ,None) | |
57: toSea | |
58: AttributeInfo(MethodSymbol(toSea , owner=0, flags=80004, info=34 ,None),AnnotatedType(TypeRefType(ThisType(com.novus.salat.annotations.raw),com.novus.salat.annotations.raw.Persist,List()),List(68)),None,List()) | |
59: AnnotatedType(TypeRefType(ThisType(com.novus.salat.annotations.raw),com.novus.salat.annotations.raw.Persist,List()),List(68)) | |
60: TypeRefType(ThisType(com.novus.salat.annotations.raw),com.novus.salat.annotations.raw.Persist,List()) | |
61: ThisType(com.novus.salat.annotations.raw) | |
62: com.novus.salat.annotations.raw | |
63: raw | |
64: com.novus.salat.annotations | |
65: annotations | |
66: com.novus.salat.annotations.raw.Persist | |
67: Persist | |
68: AnnotInfo(List(69)) | |
69: TypeRefType(ThisType(scala.annotation.target),scala.annotation.target.field,List()) | |
70: ThisType(scala.annotation.target) | |
71: scala.annotation.target | |
72: target | |
73: scala.annotation | |
74: annotation | |
75: scala.annotation.target.field | |
76: field | |
77: MethodSymbol(copy, owner=0, flags=200200, info=79 ,None) | |
78: copy | |
79: MethodType(TypeRefType(ThisType(com.novus.salat.test.model),ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None),List()),List(MethodSymbol(swept, owner=77, flags=2002000, info=34 ,None), MethodSymbol(out, owner=77, flags=2002000, info=34 ,None))) | |
80: MethodSymbol(swept, owner=77, flags=2002000, info=34 ,None) | |
81: MethodSymbol(out, owner=77, flags=2002000, info=34 ,None) | |
82: MethodSymbol(copy$default$1, owner=0, flags=2200200, info=84 ,None) | |
83: copy$default$1 | |
84: PolyType(AnnotatedType(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()),List(86)),List()) | |
85: AnnotatedType(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()),List(86)) | |
86: AnnotInfo(List(87)) | |
87: TypeRefType(ThisType(scala.annotation.unchecked),scala.annotation.unchecked.uncheckedVariance,List()) | |
88: ThisType(scala.annotation.unchecked) | |
89: scala.annotation.unchecked | |
90: unchecked | |
91: scala.annotation.unchecked.uncheckedVariance | |
92: uncheckedVariance | |
93: MethodSymbol(copy$default$2, owner=0, flags=2200200, info=84 ,None) | |
94: copy$default$2 | |
95: MethodSymbol(hashCode, owner=0, flags=40000220, info=97 ,None) | |
96: hashCode | |
97: MethodType(TypeRefType(ThisType(scala),scala.Int,List()),List()) | |
98: TypeRefType(ThisType(scala),scala.Int,List()) | |
99: scala.Int | |
100: Int | |
101: MethodSymbol(toString, owner=0, flags=40000220, info=103 ,None) | |
102: toString | |
103: MethodType(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()),List()) | |
104: MethodSymbol(equals, owner=0, flags=40000220, info=106 ,None) | |
105: equals | |
106: MethodType(TypeRefType(ThisType(scala),scala.Boolean,List()),List(MethodSymbol(x$1, owner=104, flags=202000, info=112 ,None))) | |
107: TypeRefType(ThisType(scala),scala.Boolean,List()) | |
108: scala.Boolean | |
109: Boolean | |
110: MethodSymbol(x$1, owner=104, flags=202000, info=112 ,None) | |
111: x$1 | |
112: TypeRefType(ThisType(scala),scala.Any,List()) | |
113: scala.Any | |
114: Any | |
115: MethodSymbol(productPrefix, owner=0, flags=40000220, info=117 ,None) | |
116: productPrefix | |
117: PolyType(TypeRefType(ThisType(java.lang),java.lang.String,List()),List()) | |
118: TypeRefType(ThisType(java.lang),java.lang.String,List()) | |
119: java.lang.String | |
120: MethodSymbol(productArity, owner=0, flags=40000220, info=122 ,None) | |
121: productArity | |
122: PolyType(TypeRefType(ThisType(scala),scala.Int,List()),List()) | |
123: MethodSymbol(productElement, owner=0, flags=40000220, info=125 ,None) | |
124: productElement | |
125: MethodType(TypeRefType(ThisType(scala),scala.Any,List()),List(MethodSymbol(x$1, owner=123, flags=202000, info=98 ,None))) | |
126: MethodSymbol(x$1, owner=123, flags=202000, info=98 ,None) | |
127: MethodSymbol(canEqual, owner=0, flags=40000220, info=129 ,None) | |
128: canEqual | |
129: MethodType(TypeRefType(ThisType(scala),scala.Boolean,List()),List(MethodSymbol(x$1, owner=127, flags=202000, info=112 ,None))) | |
130: MethodSymbol(x$1, owner=127, flags=202000, info=112 ,None) | |
131: AttributeInfo(ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None),TypeRefType(ThisType(scala),scala.serializable,List()),None,List()) | |
132: TypeRefType(ThisType(scala),scala.serializable,List()) | |
133: scala.serializable | |
134: serializable | |
135: ObjectSymbol(Maud, owner=com.novus.salat.test.model, flags=200402, info=137 ) | |
136: Maud | |
137: TypeRefType(ThisType(com.novus.salat.test.model),ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40200402, info=139 ,None),List()) | |
138: ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40200402, info=139 ,None) | |
139: ClassInfoType(ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40200402, info=139 ,None),List(TypeRefType(ThisType(scala.runtime),scala.runtime.AbstractFunction2,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(ThisType(com.novus.salat.test.model),ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None),List()))), TypeRefType(ThisType(scala),scala.ScalaObject,List()))) | |
140: TypeRefType(ThisType(scala.runtime),scala.runtime.AbstractFunction2,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(ThisType(com.novus.salat.test.model),ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None),List()))) | |
141: ThisType(scala.runtime) | |
142: scala.runtime | |
143: runtime | |
144: scala.runtime.AbstractFunction2 | |
145: AbstractFunction2 | |
146: MethodSymbol(<init>, owner=138, flags=200, info=147 ,None) | |
147: MethodType(TypeRefType(ThisType(com.novus.salat.test.model),ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40200402, info=139 ,None),List()),List()) | |
148: MethodSymbol(apply, owner=138, flags=200240, info=150 ,None) | |
149: apply | |
150: MethodType(TypeRefType(ThisType(com.novus.salat.test.model),ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40000040, info=13 ,None),List()),List(MethodSymbol(swept, owner=148, flags=2000, info=34 ,None), MethodSymbol(out, owner=148, flags=2000, info=34 ,None))) | |
151: MethodSymbol(swept, owner=148, flags=2000, info=34 ,None) | |
152: MethodSymbol(out, owner=148, flags=2000, info=34 ,None) | |
153: MethodSymbol(unapply, owner=138, flags=200240, info=155 ,None) | |
154: unapply | |
155: MethodType(TypeRefType(ThisType(scala),scala.Option,List(TypeRefType(ThisType(scala),scala.Tuple2,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()))))),List(MethodSymbol(x$0, owner=153, flags=2000, info=50 ,None))) | |
156: TypeRefType(ThisType(scala),scala.Option,List(TypeRefType(ThisType(scala),scala.Tuple2,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()))))) | |
157: scala.Option | |
158: Option | |
159: TypeRefType(ThisType(scala),scala.Tuple2,List(TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()), TypeRefType(SingleType(ThisType(scala),scala.Predef),scala.Predef.String,List()))) | |
160: scala.Tuple2 | |
161: Tuple2 | |
162: MethodSymbol(x$0, owner=153, flags=2000, info=50 ,None) | |
163: x$0 | |
164: MethodSymbol(readResolve, owner=138, flags=40000208, info=166 ,None) | |
165: readResolve | |
166: MethodType(TypeRefType(ThisType(java.lang),java.lang.Object,List()),List()) | |
167: AttributeInfo(ClassSymbol(Maud, owner=com.novus.salat.test.model, flags=40200402, info=139 ,None),TypeRefType(ThisType(scala),scala.serializable,List()),None,List()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment