Skip to content

Commit 3836f3c

Browse files
authored
Merge pull request #6731 from noti0na1/master
Add Support of Parsing Runtime Invisible Annotations to Classfile Parser
2 parents 1bfd25b + 6be9c7c commit 3836f3c

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

compiler/src/dotty/tools/dotc/core/StdNames.scala

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -221,24 +221,24 @@ object StdNames {
221221
final val bridgeAnnot: N = "bridge"
222222

223223
// Classfile Attributes
224-
final val AnnotationDefaultATTR: N = "AnnotationDefault"
225-
final val BridgeATTR: N = "Bridge"
226-
final val ClassfileAnnotationATTR: N = "RuntimeInvisibleAnnotations" // RetentionPolicy.CLASS. Currently not used (Apr 2009).
227-
final val CodeATTR: N = "Code"
228-
final val ConstantValueATTR: N = "ConstantValue"
229-
final val DeprecatedATTR: N = "Deprecated"
230-
final val ExceptionsATTR: N = "Exceptions"
231-
final val InnerClassesATTR: N = "InnerClasses"
232-
final val LineNumberTableATTR: N = "LineNumberTable"
233-
final val LocalVariableTableATTR: N = "LocalVariableTable"
234-
final val RuntimeAnnotationATTR: N = "RuntimeVisibleAnnotations" // RetentionPolicy.RUNTIME
235-
final val RuntimeParamAnnotationATTR: N = "RuntimeVisibleParameterAnnotations" // RetentionPolicy.RUNTIME (annotations on parameters)
236-
final val ScalaATTR: N = "Scala"
237-
final val ScalaSignatureATTR: N = "ScalaSig"
238-
final val TASTYATTR: N = "TASTY"
239-
final val SignatureATTR: N = "Signature"
240-
final val SourceFileATTR: N = "SourceFile"
241-
final val SyntheticATTR: N = "Synthetic"
224+
final val AnnotationDefaultATTR: N = "AnnotationDefault"
225+
final val BridgeATTR: N = "Bridge"
226+
final val CodeATTR: N = "Code"
227+
final val ConstantValueATTR: N = "ConstantValue"
228+
final val DeprecatedATTR: N = "Deprecated"
229+
final val ExceptionsATTR: N = "Exceptions"
230+
final val InnerClassesATTR: N = "InnerClasses"
231+
final val LineNumberTableATTR: N = "LineNumberTable"
232+
final val LocalVariableTableATTR: N = "LocalVariableTable"
233+
final val RuntimeVisibleAnnotationATTR: N = "RuntimeVisibleAnnotations" // RetentionPolicy.RUNTIME
234+
final val RuntimeInvisibleAnnotationATTR: N = "RuntimeInvisibleAnnotations" // RetentionPolicy.CLASS
235+
final val RuntimeParamAnnotationATTR: N = "RuntimeVisibleParameterAnnotations" // RetentionPolicy.RUNTIME (annotations on parameters)
236+
final val ScalaATTR: N = "Scala"
237+
final val ScalaSignatureATTR: N = "ScalaSig"
238+
final val TASTYATTR: N = "TASTY"
239+
final val SignatureATTR: N = "Signature"
240+
final val SourceFileATTR: N = "SourceFile"
241+
final val SyntheticATTR: N = "Synthetic"
242242

243243

244244
// ----- Term names -----------------------------------------

compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,13 +570,14 @@ class ClassfileParser(
570570
case tpnme.AnnotationDefaultATTR =>
571571
sym.addAnnotation(Annotation(defn.AnnotationDefaultAnnot, Nil))
572572
// Java annotations on classes / methods / fields with RetentionPolicy.RUNTIME
573-
case tpnme.RuntimeAnnotationATTR =>
573+
case tpnme.RuntimeVisibleAnnotationATTR
574+
| tpnme.RuntimeInvisibleAnnotationATTR =>
574575
parseAnnotations(attrLen)
575576

576577
// TODO 1: parse runtime visible annotations on parameters
577578
// case tpnme.RuntimeParamAnnotationATTR
578579

579-
// TODO 2: also parse RuntimeInvisibleAnnotation / RuntimeInvisibleParamAnnotation,
580+
// TODO 2: also parse RuntimeInvisibleParamAnnotation
580581
// i.e. java annotations with RetentionPolicy.CLASS?
581582

582583
case tpnme.ExceptionsATTR =>
@@ -852,7 +853,7 @@ class ClassfileParser(
852853
return Some(NoEmbedded)
853854
}
854855

855-
if (scan(tpnme.RuntimeAnnotationATTR)) {
856+
if (scan(tpnme.RuntimeVisibleAnnotationATTR) || scan(tpnme.RuntimeInvisibleAnnotationATTR)) {
856857
val attrLen = in.nextInt
857858
val nAnnots = in.nextChar
858859
var i = 0

0 commit comments

Comments
 (0)