Skip to content

Instantly share code, notes, and snippets.

@julianpeeters
Last active December 19, 2015 20:49
Show Gist options
  • Save julianpeeters/6015694 to your computer and use it in GitHub Desktop.
Save julianpeeters/6015694 to your computer and use it in GitHub Desktop.
scala signature of {case class MyRecord()}, ,a base for signature for investigating how to signatures differ depending on the members of a class. best not o look at the numbers, as the gist has been cut and pasted to show the basic structure of a scala sig only.
ScalaSig version 5.0
0: ClassSymbol(MyRecordA, owner=<empty>, flags=40, info=5 ,None)
1: MyRecordA
2: <empty>
3: <empty>
4: NoSymbol
5: ClassInfoType(ClassSymbol(MyRecordA, owner=<empty>, flags=40, info=5 ,None),List(TypeRefType(ThisType(scala),scala.AnyRef,List()), TypeRefType(ThisType(scala),scala.Product,List()), TypeRefType(ThisType(scala),scala.Serializable,List())))
6: TypeRefType(ThisType(scala),scala.AnyRef,List())
7: ThisType(scala)
8: scala
9: scala
10: scala.AnyRef
11: AnyRef
12: TypeRefType(ThisType(scala),scala.Product,List())
13: scala.Product
14: Product
15: TypeRefType(ThisType(scala),scala.Serializable,List())
16: scala.Serializable
17: Serializable
//Begin member definition as if MyRecord(x: Byte)
18: MethodSymbol(x, owner=0, flags=29400200, info=20 ,None)
19: x
20: NullaryMethodType(TypeRefType(ThisType(scala),scala.Byte,List()))
//Block not for use with MyRecord(x: AnyRef)
21: TypeRefType(ThisType(scala),scala.Byte,List())
// Begin Inner Block //Variable Types below, please fill in with your type. see list of representations
22: scala.Byte
23: Byte
//end Inner Block - Nested types go in sequence. If same type, use TypeRefType again, but there is no need for 2nd Inner Block
//end Block not for use with MyRecord(x: AnyRef)
24: MethodSymbol(x , owner=0, flags=21080004, info=21 ,None)
25: x
//end member def.
18: MethodSymbol(<init>, owner=0, flags=200, info=20 ,None)
19: <init>
20: MethodType(TypeRefType(ThisType(<empty>),ClassSymbol(MyRecordA, owner=<empty>, flags=40, info=5 ,None),List()),List())
21: TypeRefType(ThisType(<empty>),ClassSymbol(MyRecordA, owner=<empty>, flags=40, info=5 ,None),List())
//Block not for use with MyRecord(x: customTypes)
22: ThisType(<empty>)
//end lock not for use with MyRecord(x: customTypes)
//Begin member definition as if MyRecord(x: Byte)
31: MethodSymbol(x, owner=26, flags=2000, info=21 ,None)
//end member def.
23: MethodSymbol(copy, owner=0, flags=200200, info=20 ,None)
24: copy
//Begin member definition as if MyRecord(x: Byte)
34: MethodType(TypeRefType(ThisType(<empty>),ClassSymbol(MyRecordB, owner=<empty>, flags=40, info=5 ,None),List()),List(MethodSymbol(x, owner=32, flags=2002000, info=21 ,None)))
35: MethodSymbol(x, owner=32, flags=2002000, info=21 ,None)
36: MethodSymbol(copy$default$1, owner=0, flags=2200200, info=38 ,None)
37: copy$default$1
38: NullaryMethodType(AnnotatedType(TypeRefType(ThisType(scala),scala.Byte,List()),List(40)))
39: AnnotatedType(TypeRefType(ThisType(scala),scala.Byte,List()),List(40))
40: AnnotInfo(List(41))
41: TypeRefType(ThisType(scala.annotation.unchecked),scala.annotation.unchecked.uncheckedVariance,List())
42: ThisType(scala.annotation.unchecked)
43: scala.annotation.unchecked
44: unchecked
45: scala.annotation
46: annotation
47: scala.annotation.unchecked.uncheckedVariance
48: uncheckedVariance
//end member def.
25: MethodSymbol(productPrefix, owner=0, flags=200220, info=27 ,None)
26: productPrefix
27: NullaryMethodType(TypeRefType(ThisType(java.lang),java.lang.String,List()))
28: TypeRefType(ThisType(java.lang),java.lang.String,List())
//Block not for use with MyRecord(x: Object), or generics[Object]
29: ThisType(java.lang)
30: java.lang
31: lang
32: java
33: java
//end Block not for use with MyRecord(x: Object), or generics[Object]
34: java.lang.String
//Block not for use with MyRecord(x: String), or generics[String]
35: String
//end Block not for use with MyRecord(x: String), or generics[String]
36: MethodSymbol(productArity, owner=0, flags=200200, info=38 ,None)
37: productArity
//Block not for use with MyRecord(x: Int)
38: NullaryMethodType(TypeRefType(ThisType(scala),scala.Int,List()))
//end Block not for use with MyRecord(x: Int)
//Inner Block not for use with generics[int]
39: TypeRefType(ThisType(scala),scala.Int,List())
40: scala.Int
41: Int
//end Block not for use with generics[Int]
//end Block not for use with MyRecord(x: Int)
42: MethodSymbol(productElement, owner=0, flags=200200, info=44 ,None)
43: productElement
44: MethodType(TypeRefType(ThisType(scala),scala.Any,List()),List(MethodSymbol(x$1, owner=42, flags=202000, info=39 ,None)))
//Block not for use with MyRecord(x: Any), or generics[Any]
45: TypeRefType(ThisType(scala),scala.Any,List())
46: scala.Any
47: Any
//end Block not for use with MyRecord(x: Any), or generics[Any]
48: MethodSymbol(x$1, owner=42, flags=202000, info=39 ,None)
49: x$1
50: MethodSymbol(productIterator, owner=0, flags=200220, info=52 ,None)
51: productIterator
52: NullaryMethodType(TypeRefType(ThisType(scala.collection),scala.collection.Iterator,List(TypeRefType(ThisType(scala),scala.Any,List()))))
53: TypeRefType(ThisType(scala.collection),scala.collection.Iterator,List(TypeRefType(ThisType(scala),scala.Any,List())))
54: ThisType(scala.collection)
55: scala.collection
56: collection
57: scala.collection.Iterator
58: Iterator
59: MethodSymbol(canEqual, owner=0, flags=200200, info=61 ,None)
60: canEqual
61: MethodType(TypeRefType(ThisType(scala),scala.Boolean,List()),List(MethodSymbol(x$1, owner=59, flags=202000, info=45 ,None)))
//Block not for use with MyRecord(x: Boolean), or generics[Boolean]
62: TypeRefType(ThisType(scala),scala.Boolean,List())
63: scala.Boolean
64: Boolean
//end Block not for use with MyRecord(x: Boolean), or generics[Boolean]
65: MethodSymbol(x$1, owner=59, flags=202000, info=45 ,None)
66: MethodSymbol(hashCode, owner=0, flags=200220, info=68 ,None)
67: hashCode
68: MethodType(TypeRefType(ThisType(scala),scala.Int,List()),List())
69: MethodSymbol(toString, owner=0, flags=200220, info=71 ,None)
70: toString
71: MethodType(TypeRefType(ThisType(java.lang),java.lang.String,List()),List())
72: MethodSymbol(equals, owner=0, flags=200220, info=74 ,None)
73: equals
74: MethodType(TypeRefType(ThisType(scala),scala.Boolean,List()),List(MethodSymbol(x$1, owner=72, flags=202000, info=45 ,None)))
75: MethodSymbol(x$1, owner=72, flags=202000, info=45 ,None)
76: ObjectSymbol(MyRecordA, owner=<empty>, flags=200400, info=78 )
77: MyRecordA
78: TypeRefType(ThisType(<empty>),ClassSymbol(MyRecordA, owner=<empty>, flags=200400, info=80 ,None),List())
79: ClassSymbol(MyRecordA, owner=<empty>, flags=200400, info=80 ,None)
80: ClassInfoType(ClassSymbol(MyRecordA, owner=<empty>, flags=200400, info=80 ,None),List(TypeRefType(ThisType(scala.runtime),scala.runtime.AbstractFunction0,List(TypeRefType(ThisType(<empty>),ClassSymbol(MyRecordA, owner=<empty>, flags=40, info=5 ,None),List()))), TypeRefType(ThisType(scala),scala.Serializable,List())))
81: TypeRefType(ThisType(scala.runtime),scala.runtime.AbstractFunction0,List(TypeRefType(ThisType(<empty>),ClassSymbol(MyRecordA, owner=<empty>, flags=40, info=5 ,None),List())))
82: ThisType(scala.runtime)
83: scala.runtime
84: runtime
85: scala.runtime.AbstractFunction0
86: AbstractFunction0
87: MethodSymbol(<init>, owner=79, flags=200, info=88 ,None)
88: MethodType(TypeRefType(ThisType(<empty>),ClassSymbol(MyRecordA, owner=<empty>, flags=200400, info=80 ,None),List()),List())
89: MethodSymbol(toString, owner=79, flags=200222, info=71 ,None)
90: MethodSymbol(apply, owner=79, flags=200240, info=20 ,None)
91: apply
//Begin member definition as if MyRecord(x: Byte)
116: MethodType(TypeRefType(ThisType(<empty>),ClassSymbol(MyRecordB, owner=<empty>, flags=40, info=5 ,None),List()),List(MethodSymbol(x, owner=114, flags=2000, info=21 ,None)))
117: MethodSymbol(x, owner=114, flags=2000, info=21 ,None)
//end member def.
92: MethodSymbol(unapply, owner=79, flags=200240, info=94 ,None)
93: unapply
94: MethodType(TypeRefType(ThisType(scala),scala.Boolean,List()),List(MethodSymbol(x$0, owner=92, flags=2000, info=21 ,None)))
121: TypeRefType(ThisType(scala),scala.Option,List(TypeRefType(ThisType(scala),scala.Byte,List())))
//Block not for use with MyRecord(x: Option[])
122: scala.Option
123: Option
//Block not for use with MyRecord(x: Option[])
95: MethodSymbol(x$0, owner=92, flags=2000, info=21 ,None)
96: x$0
97: MethodSymbol(readResolve, owner=79, flags=200204, info=99 ,None)
98: readResolve
99: MethodType(TypeRefType(ThisType(java.lang),java.lang.Object,List()),List())
//Block not for use with MyRecord(x: Object), or (x: generics[Object])
100: TypeRefType(ThisType(java.lang),java.lang.Object,List())
101: java.lang.Object
102: Object
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment