blob: bbc1981acefba5f43a3eed4ac8c8ec891a7bdfff [file] [log] [blame]
// RUN: %target-typecheck-verify-swift
enum NumericBase {
case binary
case ternary
case quaternary
case quinary
case senary
case septary
case octal
case nonary
case decimal
case undecimal
case duodecimal
}
enum Direction {
case left
case right
}
enum WritingSystem {
case logographic
case alphabet(kind: Alphabet)
case abjad
case abugida
case syllabary
case other
}
enum Alphabet {
case roman
case greek
case cyrillic
}
func test(base: NumericBase, direction: Direction, writingSystem: WritingSystem) {
switch (base, direction, writingSystem) {
case (.binary, .left, .logographic),
(.binary, .left, .alphabet),
(.binary, .left, .abugida):
break
case (.binary, .right, .logographic),
(.binary, .right, .alphabet),
(.binary, .right, .abugida):
break
case (.binary, _, .abjad):
break
case (.binary, _, .syllabary):
break
case (.ternary, .left, .logographic):
break
case (.ternary, .left, .alphabet),
(.ternary, .left, .abugida):
break
case (.ternary, .right, .logographic),
(.ternary, .right, .abugida):
break
case (.ternary, .right, .alphabet):
break
case (.ternary, _, .abjad):
break
case (.ternary, _, .syllabary):
break
case (.quaternary, .left, .logographic):
break
case (.quaternary, .left, .alphabet),
(.quaternary, .left, .abugida):
break
case (.quaternary, .right, .logographic),
(.quaternary, .right, .abugida):
break
case (.quaternary, .right, .alphabet):
break
case (.quaternary, _, .abjad):
break
case (.quaternary, _, .syllabary):
break
case (.quinary, .left, .logographic),
(.senary, .left, .logographic):
break
case (.quinary, .left, .alphabet),
(.senary, .left, .alphabet),
(.quinary, .left, .abugida),
(.senary, .left, .abugida):
break
case (.quinary, .right, .logographic),
(.senary, .right, .logographic):
break
case (.quinary, .right, .alphabet),
(.senary, .right, .alphabet),
(.quinary, .right, .abugida),
(.senary, .right, .abugida):
break
case (.quinary, _, .abjad),
(.senary, _, .abjad):
break
case (.quinary, _, .syllabary),
(.senary, _, .syllabary):
break
case (.septary, .left, .logographic):
break
case (.septary, .left, .alphabet),
(.septary, .left, .abugida):
break
case (.septary, .right, .logographic):
break
case (.septary, .right, .alphabet),
(.septary, .right, .abugida):
break
case (.septary, _, .abjad):
break
case (.septary, _, .syllabary):
break
case (.decimal, .left, .logographic):
break
case (.decimal, .left, .alphabet),
(.decimal, .left, .abugida):
break
case (.decimal, .right, .logographic):
break
case (.decimal, .right, .alphabet),
(.decimal, .right, .abugida):
break
case (.octal, .left, .logographic),
(.nonary, .left, .logographic):
break
case (.octal, .left, .alphabet),
(.nonary, .left, .alphabet),
(.octal, .left, .abugida),
(.nonary, .left, .abugida):
break
case (.octal, .right, .logographic),
(.nonary, .right, .logographic):
break
case (.octal, .right, .alphabet),
(.nonary, .right, .alphabet),
(.octal, .right, .abugida),
(.nonary, .right, .abugida):
break
case (.octal, _, .abjad),
(.nonary, _, .abjad),
(.decimal, _, .abjad):
break
case (.octal, _, .syllabary),
(.nonary, _, .syllabary),
(.decimal, _, .syllabary):
break
case (.undecimal, .left, .logographic):
break
case (.undecimal, .left, .alphabet),
(.undecimal, .left, .abugida):
break
case (.undecimal, .right, .logographic):
break
case (.undecimal, .right, .alphabet),
(.undecimal, .right, .abugida):
break
case (.undecimal, _, .abjad):
break
case (.undecimal, _, .syllabary):
break
case (.duodecimal, _, _):
break
case (_, _, .other):
break
}
}