diff --git a/tests/pos/i8357.scala b/tests/pos/i8357.scala new file mode 100644 index 000000000000..475062c037c0 --- /dev/null +++ b/tests/pos/i8357.scala @@ -0,0 +1,30 @@ +trait FieldInfo { + val fieldType: ALL_TYPE +} + +opaque type TypeSymbol = String + +trait ConcreteType { + val name: String + val typeParameters: List[TypeSymbol] + val isUnion: Boolean = false +} + +trait UnionContainer { + val hasUnion: Boolean +} + +type ALL_TYPE = ConcreteType | TypeSymbol + +case class StaticUnionInfo(name: String, typeParameters: List[TypeSymbol]) extends ConcreteType +case class AliasInfo(name: String, typeParameters: List[TypeSymbol]) extends ConcreteType + +object UnionKind { + def unapply(f: FieldInfo): Boolean = + f.fieldType match { + case _: StaticUnionInfo => true + case t: AliasInfo if t.isUnion => true + case t: UnionContainer if t.hasUnion => true // this line here causes crash + case _ => false + } +} \ No newline at end of file