mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
46 lines
2.3 KiB
Plaintext
46 lines
2.3 KiB
Plaintext
// RUN: rm -rf %t && mkdir -p %t && %gyb %s -o %t/main.swift
|
|
// RUN: %line-directive %t/main.swift -- %target-build-swift -parse -Xfrontend -verify %t/main.swift
|
|
// REQUIRES: executable_test
|
|
|
|
% from SwiftIntTypes import all_numeric_type_names, numeric_type_names_macintosh_only, \
|
|
% all_integer_type_names, all_integer_binary_operator_names, all_integer_or_real_binary_operator_names, \
|
|
% all_arithmetic_comparison_operator_names, all_integer_assignment_operator_names, \
|
|
% all_integer_or_real_assignment_operator_names
|
|
|
|
% int_ops = all_integer_binary_operator_names() + all_integer_assignment_operator_names()
|
|
% arith_ops = all_integer_or_real_binary_operator_names() + \
|
|
% all_arithmetic_comparison_operator_names() + all_integer_or_real_assignment_operator_names()
|
|
|
|
% count = 0
|
|
// TODO: Verify the type of the result
|
|
|
|
func testIteratedOperations() {
|
|
% for typesToTest, operatorsToTest in zip([all_integer_type_names(), all_numeric_type_names()],
|
|
% [int_ops, arith_ops]):
|
|
% operatorsToTest = [x for x in operatorsToTest if not '+' in x and not '-' in x]
|
|
%# TODO: rm when rdar://18695154 is fixed.
|
|
// typesToTest: ${typesToTest}, operatorsToTest: ${operatorsToTest}
|
|
% for T1 in typesToTest:
|
|
% for T2 in typesToTest:
|
|
${ "\n\n#if arch(i386) || arch(x86_64)\n" if T1 in numeric_type_names_macintosh_only()
|
|
or T2 in numeric_type_names_macintosh_only() else "" }
|
|
% for op in operatorsToTest:
|
|
% count += 1
|
|
% theDiagnostic = "// expected-error{{of type}} expected-note*{{expected an argument list of type}} expected-note*{{exist with these partially matching parameter lists}} " if (T1 != T2) else \
|
|
% "// expected-note{{add an explicit type annotation}} expected-warning{{inferred to have type}}"\
|
|
% if (op in all_integer_assignment_operator_names() + all_integer_or_real_assignment_operator_names())\
|
|
% else "" #FIXME Temporary workaround for rdar://15928178 gyb miscompiles nested if elif
|
|
do { // ${count}
|
|
var x1_${T1}: ${T1} = 0
|
|
var x2_${T2}: ${T2} = 0
|
|
var result = x1_${T1} ${op} x2_${T2} ${theDiagnostic}
|
|
}
|
|
%end # op
|
|
${ "\n#endif //arch(i386) || arch(x86_64)\n\n" if T1 in numeric_type_names_macintosh_only()
|
|
or T2 in numeric_type_names_macintosh_only() else "" }
|
|
%end # T2
|
|
%end # T1
|
|
%end # typesToTest
|
|
|
|
}
|