| // 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 |
| } |
| } |