@@ -97,29 +97,25 @@ trait QuotesAndSplices {
9797 ctx.warning(" Canceled quote directly inside a splice. ${ '[ XYZ ] } is equivalent to XYZ." , tree.sourcePos)
9898 case _ =>
9999 }
100+
100101 if (ctx.mode.is(Mode .QuotedPattern ) && level == 1 )
101- if (false && isFullyDefined(pt, ForceDegree .all)) {
102- ctx.error(i " Spliced type pattern must not be fully defined. Consider using $pt directly " , tree.expr.sourcePos)
103- tree.withType(UnspecifiedErrorType )
104- }
105- else {
106- def spliceOwner (ctx : Context ): Symbol =
107- if (ctx.mode.is(Mode .QuotedPattern )) spliceOwner(ctx.outer) else ctx.owner
108- val name = tree.expr match {
109- case Ident (name) => (" $" + name).toTypeName
110- case expr =>
111- ctx.error(" expected a name binding" , expr.sourcePos)
112- " $error" .toTypeName
113- }
114- val typeSymInfo = pt match
115- case pt : TypeBounds => pt
116- case _ => TypeBounds .empty
117- val typeSym = ctx.newSymbol(spliceOwner(ctx), name, EmptyFlags , typeSymInfo, NoSymbol , tree.expr.span)
118- typeSym.addAnnotation(Annotation (New (ref(defn.InternalQuoted_patternBindHoleAnnot .typeRef)).withSpan(tree.expr.span)))
119- val pat = typedPattern(tree.expr, defn.QuotedTypeClass .typeRef.appliedTo(typeSym.typeRef))(
120- spliceContext.retractMode(Mode .QuotedPattern ).withOwner(spliceOwner(ctx)))
121- pat.select(tpnme.splice)
102+ def spliceOwner (ctx : Context ): Symbol =
103+ if (ctx.mode.is(Mode .QuotedPattern )) spliceOwner(ctx.outer) else ctx.owner
104+ val name = tree.expr match {
105+ case Ident (name) => (" $" + name).toTypeName
106+ case expr =>
107+ ctx.error(" expected a name binding" , expr.sourcePos)
108+ " $error" .toTypeName
122109 }
110+
111+ val typeSymInfo = pt match
112+ case pt : TypeBounds => pt
113+ case _ => TypeBounds .empty
114+ val typeSym = ctx.newSymbol(spliceOwner(ctx), name, EmptyFlags , typeSymInfo, NoSymbol , tree.expr.span)
115+ typeSym.addAnnotation(Annotation (New (ref(defn.InternalQuoted_patternBindHoleAnnot .typeRef)).withSpan(tree.expr.span)))
116+ val pat = typedPattern(tree.expr, defn.QuotedTypeClass .typeRef.appliedTo(typeSym.typeRef))(
117+ spliceContext.retractMode(Mode .QuotedPattern ).withOwner(spliceOwner(ctx)))
118+ pat.select(tpnme.splice)
123119 else
124120 typedSelect(untpd.Select (tree.expr, tpnme.splice), pt)(spliceContext).withSpan(tree.span)
125121 }
0 commit comments