summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorLex Spoon <lex@lexspoon.org>2007-05-23 09:52:42 +0000
committerLex Spoon <lex@lexspoon.org>2007-05-23 09:52:42 +0000
commitf6eb33a2166d2df55ce65881b01e928bbbbcd324 (patch)
tree1f25c4cae9094c7e134d75be7658f987a8eb4d5c /src/compiler
parentfcbd0bfa8b23aafbac517c7cf274048404de2b69 (diff)
downloadscala-f6eb33a2166d2df55ce65881b01e928bbbbcd324.tar.gz
scala-f6eb33a2166d2df55ce65881b01e928bbbbcd324.tar.bz2
scala-f6eb33a2166d2df55ce65881b01e928bbbbcd324.zip
fixed a type error in the pickling of annotatio...
fixed a type error in the pickling of annotation arguments
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala b/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala
index c499679961..259f4726b2 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala
@@ -272,27 +272,26 @@ abstract class Pickler extends SubComponent {
children foreach putSymbol
}
- private def putAnnotation(sym: Symbol, attr: AnnotationInfo): unit = {
- assert(putEntry((sym, attr)))
- putType(attr.atp)
- for (c <- attr.args) putTreeOrConstant(c)
- for ((name, c) <- attr.assocs) { putEntry(name); putTreeOrConstant(c) }
+ private def putAnnotation(sym: Symbol, annot: AnnotationInfo): unit = {
+ assert(putEntry((sym, annot)))
+ val AnnotationInfo(atp, args, assocs) = annot
+ putType(atp)
+ args foreach putAnnotationArg
+ for ((name, c) <- assocs) { putEntry(name); putAnnotationArg(c) }
}
private def putAnnotation(annot: AnnotationInfo): unit =
if(putEntry(annot)) {
val AnnotationInfo(tpe, args, assocs) = annot
putType(tpe)
- args foreach putTreeOrConstant
- for ((name, rhs) <- assocs) { putEntry(name); putTreeOrConstant(rhs) }
+ args foreach putAnnotationArg
+ for ((name, rhs) <- assocs) { putEntry(name); putAnnotationArg(rhs) }
}
- private def putTreeOrConstant(x: AnyRef) {
- x match {
- case c:Constant => putConstant(c)
- case tree:reflect.Tree => putTree(tree)
- case _ =>
- throw new FatalError("attribute neither tree nor constant: " + x)
+ private def putAnnotationArg(arg: AnnotationArgument) {
+ arg.constant match {
+ case Some(c) => putConstant(c)
+ case _ => putTree(arg.tree)
}
}