@@ -1415,26 +1415,21 @@ trait Checking {
14151415 /** Check arguments of annotations */
14161416 private def checkAnnotTree (tree : Tree )(using Context ): Tree =
14171417 val cls = Annotations .annotClass(tree)
1418- tree match
1419- case Apply (tycon, arg :: Nil ) if cls == defn.TargetNameAnnot =>
1420- arg match
1421- case Literal (Constant (" " )) =>
1422- report.error(em " target name cannot be empty " , arg.srcPos)
1423- case Literal (_) => // ok
1424- case _ =>
1425- report.error(em " @ ${cls.name} needs a string literal as argument " , arg.srcPos)
1426- tree
1427- case _ =>
1428- tree.find(! isValidAnnotSubtree(_)) match
1429- case None => tree
1430- case Some (invalidSubTree) =>
1431- errorTree(
1432- EmptyTree ,
1433- em """ Implementation restriction: expression cannot be used inside an annotation argument.
1434- |Tree: ${invalidSubTree}
1435- |Type: ${invalidSubTree.tpe}""" ,
1436- invalidSubTree.srcPos
1437- )
1418+ if cls == defn.TargetNameAnnot then
1419+ allArguments(tree) match
1420+ case List (Literal (Constant (name : String ))) if ! name.isEmpty => tree
1421+ case _ => errorTree(tree, em " @ ${cls.name} needs a non-empty string literal as argument " )
1422+ else
1423+ tree.find(! isValidAnnotSubtree(_)) match
1424+ case None => tree
1425+ case Some (invalidSubTree) =>
1426+ errorTree(
1427+ EmptyTree ,
1428+ em """ Implementation restriction: expression cannot be used inside an annotation argument.
1429+ |Tree: ${invalidSubTree}
1430+ |Type: ${invalidSubTree.tpe}""" ,
1431+ invalidSubTree.srcPos
1432+ )
14381433
14391434 /** Returns `true` if this tree can appear inside an annotation argument. */
14401435 private def isValidAnnotSubtree (subTree : Tree ) =
0 commit comments