From 20727ff3af94a2d6ea41234baa5c4eb72304d526 Mon Sep 17 00:00:00 2001 From: Alistair Bell Date: Sun, 2 Nov 2025 13:34:45 -0500 Subject: [PATCH] Add GCC 15 support. --- regression-tests/run-tests.sh | 4 + .../gcc-15-c++2b/gcc-version.output | 5 + .../mixed-allcpp1-hello.cpp.execution | 1 + ...ixed-as-for-variant-20-types.cpp.execution | 60 +++++ .../mixed-autodiff-taylor.cpp.execution | 63 +++++ .../mixed-bounds-check.cpp.execution | 1 + ...-bounds-safety-with-assert-2.cpp.execution | 5 + ...ed-bounds-safety-with-assert.cpp.execution | 1 + ...mixed-bugfix-for-ufcs-non-local.cpp.output | 21 ++ ...pressions-and-postconditions.cpp.execution | 4 + .../mixed-default-arguments.cpp.execution | 4 + .../mixed-fixed-type-aliases.cpp.execution | 4 + .../mixed-float-literals.cpp.execution | 72 ++++++ .../mixed-forwarding.cpp.execution | 12 + ...-expression-and-std-for-each.cpp.execution | 2 + ...ranges-for-each-with-capture.cpp.execution | 4 + ...sion-and-std-ranges-for-each.cpp.execution | 4 + ...ression-with-pointer-capture.cpp.execution | 6 + ...ession-with-repeated-capture.cpp.execution | 6 + .../gcc-15-c++2b/mixed-hello.cpp.execution | 1 + .../mixed-increment-decrement.cpp.execution | 2 + ...-safety-3-contract-violation.cpp.execution | 1 + ...ixed-initialization-safety-3.cpp.execution | 1 + .../mixed-inspect-templates.cpp.execution | 8 + .../mixed-inspect-values-2.cpp.execution | 5 + .../mixed-inspect-values.cpp.execution | 12 + ...ed-intro-example-three-loops.cpp.execution | 7 + ...or-with-counter-include-last.cpp.execution | 5 + ...xed-is-as-value-with-variant.cpp.execution | 42 +++ .../mixed-is-as-variant.cpp.execution | 145 +++++++++++ ...me-safety-and-null-contracts.cpp.execution | 2 + ...fetime-safety-pointer-init-4.cpp.execution | 1 + ...mixed-multiple-return-values.cpp.execution | 2 + .../mixed-out-destruction.cpp.execution | 21 ++ ...arameter-passing-generic-out.cpp.execution | 2 + .../mixed-parameter-passing.cpp.execution | 2 + ...-postexpression-with-capture.cpp.execution | 2 + .../mixed-string-interpolation.cpp.execution | 17 ++ .../mixed-test-parens.cpp.execution | 3 + .../mixed-type-safety-1.cpp.execution | 6 + ...-multiple-template-arguments.cpp.execution | 2 + ...re2-assert-expected-not-null.cpp.execution | 1 + ...re2-assert-optional-not-null.cpp.execution | 1 + ...2-assert-shared-ptr-not-null.cpp.execution | 1 + ...2-assert-unique-ptr-not-null.cpp.execution | 1 + .../pure2-autodiff-higher-order.cpp.execution | 240 ++++++++++++++++++ .../gcc-15-c++2b/pure2-autodiff.cpp.execution | 46 ++++ .../pure2-bounds-safety-span.cpp.execution | 3 + .../pure2-break-continue.cpp.execution | 26 ++ ...r-memberwise-base-assignment.cpp.execution | 2 + ...bugfix-for-template-argument.cpp.execution | 1 + ...e2-bugfix-for-ufcs-arguments.cpp.execution | 4 + .../pure2-chained-comparisons.cpp.execution | 27 ++ .../pure2-contracts.cpp.execution | 3 + .../pure2-default-arguments.cpp.execution | 4 + ...-comparisons-and-final-types.cpp.execution | 1 + .../gcc-15-c++2b/pure2-enum.cpp.execution | 36 +++ .../pure2-expected-is-as.cpp.execution | 15 ++ ...2-for-loop-range-with-lambda.cpp.execution | 1 + .../pure2-forward-return.cpp.execution | 2 + ...re2-function-body-reflection.cpp.execution | 1 + ...n-multiple-forward-arguments.cpp.execution | 1 + ...pression-body-default-return.cpp.execution | 1 + .../pure2-function-typeids.cpp.execution | 17 ++ .../gcc-15-c++2b/pure2-hashable.cpp.execution | 1 + .../gcc-15-c++2b/pure2-hello.cpp.execution | 1 + ...lization-safety-with-else-if.cpp.execution | 1 + ...eric-function-multiple-types.cpp.execution | 8 + ...-with-as-in-generic-function.cpp.execution | 3 + ...ck-with-variant-any-optional.cpp.execution | 11 + ...ty-with-variant-any-optional.cpp.execution | 17 ++ .../pure2-interpolation.cpp.execution | 13 + ...re2-intro-example-hello-2022.cpp.execution | 2 + ...e2-intro-example-three-loops.cpp.execution | 8 + ...ith-free-functions-predicate.cpp.execution | 6 + ...e2-is-with-polymorphic-types.cpp.execution | 8 + ...2-is-with-unnamed-predicates.cpp.execution | 6 + ...2-is-with-variable-and-value.cpp.execution | 9 + .../gcc-15-c++2b/pure2-last-use.cpp.execution | 1 + ...eter-across-unnamed-function.cpp.execution | 1 + .../pure2-main-args.cpp.execution | 2 + .../pure2-more-wildcards.cpp.execution | 2 + .../gcc-15-c++2b/pure2-print.cpp.execution | 2 + .../pure2-range-operators.cpp.execution | 49 ++++ ...ng-literal-and-interpolation.cpp.execution | 17 ++ .../pure2-regex-general.cpp.execution | 11 + .../pure2-regex_01_char_matcher.cpp.execution | 14 + .../pure2-regex_02_ranges.cpp.execution | 42 +++ .../pure2-regex_03_wildcard.cpp.execution | 22 ++ .../pure2-regex_04_start_end.cpp.execution | 12 + .../pure2-regex_05_classes.cpp.execution | 21 ++ .../pure2-regex_06_boundaries.cpp.execution | 19 ++ ...pure2-regex_07_short_classes.cpp.execution | 26 ++ .../pure2-regex_08_alternatives.cpp.execution | 4 + .../pure2-regex_09_groups.cpp.execution | 13 + .../pure2-regex_10_escapes.cpp.execution | 22 ++ ...e2-regex_11_group_references.cpp.execution | 26 ++ ...e2-regex_12_case_insensitive.cpp.execution | 121 +++++++++ ...regex_13_possessive_modifier.cpp.execution | 50 ++++ ...-regex_14_multiline_modifier.cpp.execution | 201 +++++++++++++++ ...re2-regex_15_group_modifiers.cpp.execution | 55 ++++ ...egex_16_perl_syntax_modifier.cpp.execution | 35 +++ .../pure2-regex_17_comments.cpp.execution | 5 + .../pure2-regex_18_branch_reset.cpp.execution | 17 ++ .../pure2-regex_19_lookahead.cpp.execution | 57 +++++ .../pure2-regex_20_lookbehind.cpp.execution | 58 +++++ ...re2-regex_21_atomic_patterns.cpp.execution | 8 + .../pure2-repeated-call.cpp.execution | 1 + .../pure2-requires-clauses.cpp.execution | 1 + .../pure2-return-tuple-operator.cpp.execution | 3 + ...2-statement-scope-parameters.cpp.execution | 2 + ...-rightshift-and-rightshifteq.cpp.execution | 1 + ...re2-template-parameter-lists.cpp.execution | 4 + ...2-type-and-namespace-aliases.cpp.execution | 2 + .../pure2-type-constraints.cpp.execution | 2 + .../pure2-type-safety-1.cpp.execution | 11 + ...ty-2-with-inspect-expression.cpp.execution | 8 + .../pure2-types-basics.cpp.execution | 27 ++ .../pure2-types-down-upcast.cpp.execution | 24 ++ .../pure2-types-inheritance.cpp.execution | 5 + ...der-independence-and-nesting.cpp.execution | 5 + ...-ordering-via-meta-functions.cpp.execution | 1 + ...nd-that-1-provide-everything.cpp.execution | 8 + ...ide-mvconstruct-and-cpassign.cpp.execution | 8 + ...ide-mvconstruct-and-mvassign.cpp.execution | 7 + ...rovide-cpassign-and-mvassign.cpp.execution | 8 + ...ide-nothing-but-general-case.cpp.execution | 8 + .../pure2-types-that-parameters.cpp.execution | 7 + ...lue-types-via-meta-functions.cpp.execution | 1 + .../gcc-15-c++2b/pure2-union.cpp.execution | 4 + .../gcc-15-c++2b/pure2-unsafe.cpp.execution | 1 + .../pure2-variadics.cpp.execution | 7 + .../gcc-15-c++2b/run-tests-gcc-15.sh | 25 ++ .../test-results/gcc-15-c++2b/xyzzy | 1 + 134 files changed, 2192 insertions(+) create mode 100644 regression-tests/test-results/gcc-15-c++2b/gcc-version.output create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-allcpp1-hello.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-as-for-variant-20-types.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-autodiff-taylor.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-bounds-check.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-bounds-safety-with-assert-2.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-bounds-safety-with-assert.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-bugfix-for-ufcs-non-local.cpp.output create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-captures-in-expressions-and-postconditions.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-default-arguments.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-fixed-type-aliases.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-float-literals.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-forwarding.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-for-each.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-ranges-for-each-with-capture.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-ranges-for-each.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-with-pointer-capture.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-with-repeated-capture.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-hello.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-increment-decrement.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-initialization-safety-3-contract-violation.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-initialization-safety-3.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-inspect-templates.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-inspect-values-2.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-inspect-values.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-intro-example-three-loops.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-intro-for-with-counter-include-last.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-is-as-value-with-variant.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-is-as-variant.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-lifetime-safety-and-null-contracts.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-lifetime-safety-pointer-init-4.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-multiple-return-values.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-out-destruction.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-parameter-passing-generic-out.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-parameter-passing.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-postexpression-with-capture.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-string-interpolation.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-test-parens.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-type-safety-1.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/mixed-ufcs-multiple-template-arguments.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-assert-expected-not-null.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-assert-optional-not-null.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-assert-shared-ptr-not-null.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-assert-unique-ptr-not-null.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-autodiff-higher-order.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-autodiff.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-bounds-safety-span.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-break-continue.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-memberwise-base-assignment.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-template-argument.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-ufcs-arguments.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-chained-comparisons.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-contracts.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-default-arguments.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-defaulted-comparisons-and-final-types.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-enum.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-expected-is-as.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-for-loop-range-with-lambda.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-forward-return.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-function-body-reflection.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-function-multiple-forward-arguments.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-function-single-expression-body-default-return.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-function-typeids.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-hashable.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-hello.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-initialization-safety-with-else-if.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-inspect-expression-in-generic-function-multiple-types.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-inspect-expression-with-as-in-generic-function.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-inspect-fallback-with-variant-any-optional.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-inspect-generic-void-empty-with-variant-any-optional.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-interpolation.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-intro-example-hello-2022.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-intro-example-three-loops.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-is-with-free-functions-predicate.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-is-with-polymorphic-types.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-is-with-unnamed-predicates.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-is-with-variable-and-value.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-last-use.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-look-up-parameter-across-unnamed-function.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-main-args.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-more-wildcards.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-print.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-range-operators.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-raw-string-literal-and-interpolation.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex-general.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_01_char_matcher.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_02_ranges.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_03_wildcard.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_04_start_end.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_05_classes.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_06_boundaries.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_07_short_classes.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_08_alternatives.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_09_groups.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_10_escapes.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_11_group_references.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_12_case_insensitive.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_13_possessive_modifier.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_14_multiline_modifier.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_15_group_modifiers.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_16_perl_syntax_modifier.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_17_comments.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_18_branch_reset.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_19_lookahead.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_20_lookbehind.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-regex_21_atomic_patterns.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-repeated-call.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-requires-clauses.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-return-tuple-operator.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-statement-scope-parameters.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-synthesize-rightshift-and-rightshifteq.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-template-parameter-lists.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-type-and-namespace-aliases.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-type-constraints.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-type-safety-1.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-type-safety-2-with-inspect-expression.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-basics.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-down-upcast.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-inheritance.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-order-independence-and-nesting.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-ordering-via-meta-functions.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-1-provide-everything.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-2-provide-mvconstruct-and-cpassign.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-3-provide-mvconstruct-and-mvassign.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-4-provide-cpassign-and-mvassign.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-5-provide-nothing-but-general-case.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-that-parameters.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-types-value-types-via-meta-functions.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-union.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-unsafe.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/pure2-variadics.cpp.execution create mode 100644 regression-tests/test-results/gcc-15-c++2b/run-tests-gcc-15.sh create mode 100644 regression-tests/test-results/gcc-15-c++2b/xyzzy diff --git a/regression-tests/run-tests.sh b/regression-tests/run-tests.sh index af5cbbeba..e8ea8d6fa 100644 --- a/regression-tests/run-tests.sh +++ b/regression-tests/run-tests.sh @@ -179,6 +179,10 @@ else exec_out_dir="$expected_results_dir/gcc-13" elif [[ "$compiler_version" == *"g++-14"* ]]; then exec_out_dir="$expected_results_dir/gcc-14" + elif [[ "$compiler_version" == *"g++-15"* || + "$compiler_version" == *"g++ (Ubuntu 15"* + ]]; then + exec_out_dir="$expected_results_dir/gcc-15" else printf "Unhandled compiler version:\n$compiler_version\n\n" exit 2 diff --git a/regression-tests/test-results/gcc-15-c++2b/gcc-version.output b/regression-tests/test-results/gcc-15-c++2b/gcc-version.output new file mode 100644 index 000000000..ed31fd038 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/gcc-version.output @@ -0,0 +1,5 @@ +gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0 +Copyright (C) 2025 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-allcpp1-hello.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-allcpp1-hello.cpp.execution new file mode 100644 index 000000000..802992c42 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-allcpp1-hello.cpp.execution @@ -0,0 +1 @@ +Hello world diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-as-for-variant-20-types.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-as-for-variant-20-types.cpp.execution new file mode 100644 index 000000000..5e2c9d82e --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-as-for-variant-20-types.cpp.execution @@ -0,0 +1,60 @@ +v as X< 0> = 0 +v as X< 1> = 1 +v as X< 2> = 2 +v as X< 3> = 3 +v as X< 4> = 4 +v as X< 5> = 5 +v as X< 6> = 6 +v as X< 7> = 7 +v as X< 8> = 8 +v as X< 9> = 9 +v as X<10> = 10 +v as X<11> = 11 +v as X<12> = 12 +v as X<13> = 13 +v as X<14> = 14 +v as X<15> = 15 +v as X<16> = 16 +v as X<17> = 17 +v as X<18> = 18 +v as X<19> = 19 +as_const(v) as X< 0> = 0 +as_const(v) as X< 1> = 1 +as_const(v) as X< 2> = 2 +as_const(v) as X< 3> = 3 +as_const(v) as X< 4> = 4 +as_const(v) as X< 5> = 5 +as_const(v) as X< 6> = 6 +as_const(v) as X< 7> = 7 +as_const(v) as X< 8> = 8 +as_const(v) as X< 9> = 9 +as_const(v) as X<10> = 10 +as_const(v) as X<11> = 11 +as_const(v) as X<12> = 12 +as_const(v) as X<13> = 13 +as_const(v) as X<14> = 14 +as_const(v) as X<15> = 15 +as_const(v) as X<16> = 16 +as_const(v) as X<17> = 17 +as_const(v) as X<18> = 18 +as_const(v) as X<19> = 19 +move(v) as X< 0> = 0 +move(v) as X< 1> = 1 +move(v) as X< 2> = 2 +move(v) as X< 3> = 3 +move(v) as X< 4> = 4 +move(v) as X< 5> = 5 +move(v) as X< 6> = 6 +move(v) as X< 7> = 7 +move(v) as X< 8> = 8 +move(v) as X< 9> = 9 +move(v) as X<10> = 10 +move(v) as X<11> = 11 +move(v) as X<12> = 12 +move(v) as X<13> = 13 +move(v) as X<14> = 14 +move(v) as X<15> = 15 +move(v) as X<16> = 16 +move(v) as X<17> = 17 +move(v) as X<18> = 18 +move(v) as X<19> = 19 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-autodiff-taylor.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-autodiff-taylor.cpp.execution new file mode 100644 index 000000000..0a486b06f --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-autodiff-taylor.cpp.execution @@ -0,0 +1,63 @@ +x + x = 4.000000 +x + x diff order 1 = 2.000000 +x + x diff order 2 = 0.000000 +x + x diff order 3 = 0.000000 +x + x diff order 4 = 0.000000 +x + x diff order 5 = 0.000000 +x + x diff order 6 = 0.000000 +0 - x = -2.000000 +0 - x diff order 1 = -1.000000 +0 - x diff order 2 = 0.000000 +0 - x diff order 3 = 0.000000 +0 - x diff order 4 = 0.000000 +0 - x diff order 5 = 0.000000 +0 - x diff order 6 = 0.000000 +x^7 = 128.000000 +x^7 diff order 1 = 448.000000 +x^7 diff order 2 = 1344.000000 +x^7 diff order 3 = 3360.000000 +x^7 diff order 4 = 6720.000000 +x^7 diff order 5 = 10080.000000 +x^7 diff order 6 = 10080.000000 +1/x = 0.500000 +1/x diff order 1 = -0.250000 +1/x diff order 2 = 0.250000 +1/x diff order 3 = -0.375000 +1/x diff order 4 = 0.750000 +1/x diff order 5 = -1.875000 +1/x diff order 6 = 5.625000 +sqrt(x) = 1.414214 +sqrt(x) diff order 1 = 0.353553 +sqrt(x) diff order 2 = -0.088388 +sqrt(x) diff order 3 = 0.066291 +sqrt(x) diff order 4 = -0.082864 +sqrt(x) diff order 5 = 0.145012 +sqrt(x) diff order 6 = -0.326277 +log(x) = 0.693147 +log(x) diff order 1 = 0.500000 +log(x) diff order 2 = -0.250000 +log(x) diff order 3 = 0.250000 +log(x) diff order 4 = -0.375000 +log(x) diff order 5 = 0.750000 +log(x) diff order 6 = -1.875000 +exp(x) = 7.389056 +exp(x) diff order 1 = 7.389056 +exp(x) diff order 2 = 7.389056 +exp(x) diff order 3 = 7.389056 +exp(x) diff order 4 = 7.389056 +exp(x) diff order 5 = 7.389056 +exp(x) diff order 6 = 7.389056 +sin(x) = 0.909297 +sin(x) diff order 1 = -0.416147 +sin(x) diff order 2 = -0.909297 +sin(x) diff order 3 = 0.416147 +sin(x) diff order 4 = 0.909297 +sin(x) diff order 5 = -0.416147 +sin(x) diff order 6 = -0.909297 +cos(x) = -0.416147 +cos(x) diff order 1 = -0.909297 +cos(x) diff order 2 = 0.416147 +cos(x) diff order 3 = 0.909297 +cos(x) diff order 4 = -0.416147 +cos(x) diff order 5 = -0.909297 +cos(x) diff order 6 = 0.416147 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-check.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-check.cpp.execution new file mode 100644 index 000000000..e8f4c97d0 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-check.cpp.execution @@ -0,0 +1 @@ +mixed-bounds-check.cpp2(9) int main(): Bounds safety violation: out of bounds access attempt detected - attempted access at index 5, [min,max] range is [0,4] diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-safety-with-assert-2.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-safety-with-assert-2.cpp.execution new file mode 100644 index 000000000..6330ca570 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-safety-with-assert-2.cpp.execution @@ -0,0 +1,5 @@ +1 +44 +45 +46 +5 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-safety-with-assert.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-safety-with-assert.cpp.execution new file mode 100644 index 000000000..84f4e7ef7 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-bounds-safety-with-assert.cpp.execution @@ -0,0 +1 @@ +mixed-bounds-safety-with-assert.cpp2(11) void print_subrange(const auto:126&, cpp2::impl::in, cpp2::impl::in) [with auto:126 = std::vector; cpp2::impl::in = const int]: Bounds safety violation diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-bugfix-for-ufcs-non-local.cpp.output b/regression-tests/test-results/gcc-15-c++2b/mixed-bugfix-for-ufcs-non-local.cpp.output new file mode 100644 index 000000000..d41c45e6a --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-bugfix-for-ufcs-non-local.cpp.output @@ -0,0 +1,21 @@ +In file included from mixed-bugfix-for-ufcs-non-local.cpp:6: +../../../include/cpp2util.h:10059:1: error: lambda-expression in template parameter type +../../../include/cpp2util.h:10096:59: note: in expansion of macro ‘CPP2_UFCS_’ +mixed-bugfix-for-ufcs-non-local.cpp2:13:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’ +mixed-bugfix-for-ufcs-non-local.cpp2:13:36: error: template argument 1 is invalid +../../../include/cpp2util.h:10059:1: error: lambda-expression in template parameter type +../../../include/cpp2util.h:10096:59: note: in expansion of macro ‘CPP2_UFCS_’ +mixed-bugfix-for-ufcs-non-local.cpp2:21:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’ +mixed-bugfix-for-ufcs-non-local.cpp2:21:36: error: template argument 1 is invalid +../../../include/cpp2util.h:10059:1: error: lambda-expression in template parameter type +../../../include/cpp2util.h:10096:59: note: in expansion of macro ‘CPP2_UFCS_’ +mixed-bugfix-for-ufcs-non-local.cpp2:31:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’ +mixed-bugfix-for-ufcs-non-local.cpp2:31:36: error: template argument 1 is invalid +../../../include/cpp2util.h:10059:1: error: lambda-expression in template parameter type +../../../include/cpp2util.h:10096:59: note: in expansion of macro ‘CPP2_UFCS_’ +mixed-bugfix-for-ufcs-non-local.cpp2:33:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’ +mixed-bugfix-for-ufcs-non-local.cpp2:33:36: error: template argument 1 is invalid +../../../include/cpp2util.h:10059:1: error: lambda-expression in template parameter type +../../../include/cpp2util.h:10096:59: note: in expansion of macro ‘CPP2_UFCS_’ +mixed-bugfix-for-ufcs-non-local.cpp2:21:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’ +mixed-bugfix-for-ufcs-non-local.cpp2:21:36: error: template argument 1 is invalid diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-captures-in-expressions-and-postconditions.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-captures-in-expressions-and-postconditions.cpp.execution new file mode 100644 index 000000000..dfca5b9a3 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-captures-in-expressions-and-postconditions.cpp.execution @@ -0,0 +1,4 @@ +hello +2022 +hello-ish +2022-ish diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-default-arguments.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-default-arguments.cpp.execution new file mode 100644 index 000000000..98b5204b6 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-default-arguments.cpp.execution @@ -0,0 +1,4 @@ +1 "test" +0 "" +1 "test" +0 "" diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-fixed-type-aliases.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-fixed-type-aliases.cpp.execution new file mode 100644 index 000000000..3122e6030 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-fixed-type-aliases.cpp.execution @@ -0,0 +1,4 @@ +true +false +"test.exe" +true diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-float-literals.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-float-literals.cpp.execution new file mode 100644 index 000000000..6b15b12bc --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-float-literals.cpp.execution @@ -0,0 +1,72 @@ +123 +123 +123 +123 +123 +123 +123456 +123 +123 +123 +123 +123 +123 +123456 +123456 +123456 +456 +456 +1e+10 +1e+10 +1e-10 +1e-10 +1e-10 +1e-10 +1e-10 +1e-10 +1e-10 +123456 +123456 +456 +456 +1e+10 +1e+10 +1e-10 +1e-10 +1e-10 +1e-10 +1e-10 +1e-10 +1e-10 +123 +123 +123 +123 +123 +123 +123456 +123 +123 +123 +123 +123 +123 +123456 +123456 +456 +1e+10 +1e+10 +1e-10 +1e-10 +1e-10 +1e-10 +1e-10 +123456 +456 +1e+10 +1e+10 +1e-10 +1e-10 +1e-10 +1e-10 +1e-10 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-forwarding.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-forwarding.cpp.execution new file mode 100644 index 000000000..952feac3b --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-forwarding.cpp.execution @@ -0,0 +1,12 @@ ++X 1 ++X 2 +copy X 1 +copy X 2 +copy X 1 +move X 2 ++X 3 ++X 4 +copy X 3 +copy X 4 +move X 3 +move X 4 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-for-each.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-for-each.cpp.execution new file mode 100644 index 000000000..728fbcc8f --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-for-each.cpp.execution @@ -0,0 +1,2 @@ +hello-ish maybe +2022-ish maybe diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-ranges-for-each-with-capture.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-ranges-for-each-with-capture.cpp.execution new file mode 100644 index 000000000..dfca5b9a3 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-ranges-for-each-with-capture.cpp.execution @@ -0,0 +1,4 @@ +hello +2022 +hello-ish +2022-ish diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-ranges-for-each.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-ranges-for-each.cpp.execution new file mode 100644 index 000000000..dfca5b9a3 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-and-std-ranges-for-each.cpp.execution @@ -0,0 +1,4 @@ +hello +2022 +hello-ish +2022-ish diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-with-pointer-capture.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-with-pointer-capture.cpp.execution new file mode 100644 index 000000000..e9d6a083f --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-with-pointer-capture.cpp.execution @@ -0,0 +1,6 @@ + +hello + +2023 +hello-ish +2023-ish diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-with-repeated-capture.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-with-repeated-capture.cpp.execution new file mode 100644 index 000000000..137aaec33 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-function-expression-with-repeated-capture.cpp.execution @@ -0,0 +1,6 @@ + +hello + +2022 +hello-ish +2022-ish diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-hello.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-hello.cpp.execution new file mode 100644 index 000000000..c8848197e --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-hello.cpp.execution @@ -0,0 +1 @@ +Hello [world] diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-increment-decrement.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-increment-decrement.cpp.execution new file mode 100644 index 000000000..6f42aeb32 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-increment-decrement.cpp.execution @@ -0,0 +1,2 @@ +12234 +12234 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-initialization-safety-3-contract-violation.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-initialization-safety-3-contract-violation.cpp.execution new file mode 100644 index 000000000..818a56397 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-initialization-safety-3-contract-violation.cpp.execution @@ -0,0 +1 @@ +mixed-initialization-safety-3-contract-violation.cpp2(25) void fill(cpp2::impl::out >, cpp2::impl::in >, cpp2::impl::in): Contract violation: fill: value must contain at least count elements diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-initialization-safety-3.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-initialization-safety-3.cpp.execution new file mode 100644 index 000000000..b261dd86c --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-initialization-safety-3.cpp.execution @@ -0,0 +1 @@ +>> [xyzzy] diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-templates.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-templates.cpp.execution new file mode 100644 index 000000000..03cdf50b7 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-templates.cpp.execution @@ -0,0 +1,8 @@ +inspected vec : std::vector +inspected arr : std::array +inspected var : std::variant +inspected myt : my_type +inspected vec : std::vector +inspected arr : std::array +inspected var : std::variant +inspected myt : my_type diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-values-2.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-values-2.cpp.execution new file mode 100644 index 000000000..8372eadca --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-values-2.cpp.execution @@ -0,0 +1,5 @@ +i is between 11 and 20 +less than 20 +i is between 10 and 30 +v is empty +v is empty diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-values.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-values.cpp.execution new file mode 100644 index 000000000..e7130e0f8 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-inspect-values.cpp.execution @@ -0,0 +1,12 @@ +rev dodgson +(no match) +the answer +zero +plugh +zero +1 or 2 +1 or 2 +3 +integer -42 +xyzzy +(no match) diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-intro-example-three-loops.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-intro-example-three-loops.cpp.execution new file mode 100644 index 000000000..984a60a83 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-intro-example-three-loops.cpp.execution @@ -0,0 +1,7 @@ +>> hello +>> big +>> world + ** ** ** +>> [hello] +>> [big] +>> [world] diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-intro-for-with-counter-include-last.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-intro-for-with-counter-include-last.cpp.execution new file mode 100644 index 000000000..05961867a --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-intro-for-with-counter-include-last.cpp.execution @@ -0,0 +1,5 @@ +1 42 +2 84 +3 168 +4 336 +5 672 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-is-as-value-with-variant.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-is-as-value-with-variant.cpp.execution new file mode 100644 index 000000000..13a1c120c --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-is-as-value-with-variant.cpp.execution @@ -0,0 +1,42 @@ +# std::monostate + +--- +# int(42) + 42 in(0,100) +--- +# int(24) + 24 in(0,100) +--- +# std::optional(100) + 100 std::optional(100) +--- +# std::any(-100) + +--- +# *int(314) + +--- +# std::unique_ptr(1000) + +--- +# my_variant(std::monostate) + +--- +# my_variant(int(42)) + +--- +# my_variant(int(24)) + +--- +# my_variant(std::optional(100)) + +--- +# my_variant(std::any(-100)) + +--- +# my_variant(*int(314)) + +--- +# my_variant(std::unique_ptr(1000)) + +--- diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-is-as-variant.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-is-as-variant.cpp.execution new file mode 100644 index 000000000..bfa0bda56 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-is-as-variant.cpp.execution @@ -0,0 +1,145 @@ +# std::monostate + +## v as lvalue reference + +v is empty = true +v is std::monostate = true +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = false, (v as X<20>) = bad variant access + +## v as const lvalue reference + +v is empty = true +v is std::monostate = true +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = false, (v as X<20>) = bad variant access + +## v as rvalue reference + +v is empty = true +v is std::monostate = true +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = false, (v as X<20>) = bad variant access + +# X<1> + +## v as lvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = true, (v as X< 1>).to_string() = X<1> +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = false, (v as X<20>) = bad variant access + +## v as const lvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = true, (v as X< 1>).to_string() = X<1> +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = false, (v as X<20>) = bad variant access + +## v as rvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = true, (v as X< 1>).to_string() = X<1> +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = false, (v as X<20>) = bad variant access + +# X<19> + +## v as lvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = true, (v as X<19>).to_string() = X<19> +v is X<20> = false, (v as X<20>) = bad variant access + +## v as const lvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = true, (v as X<19>).to_string() = X<19> +v is X<20> = false, (v as X<20>) = bad variant access + +## v as rvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = true, (v as X<19>).to_string() = X<19> +v is X<20> = false, (v as X<20>) = bad variant access + +# X<20> + +## v as lvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = true, (v as X<20>) = works! + +## v as const lvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = true, (v as X<20>) = works! + +## v as rvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = true, (v as X<20>) = works! + +# X<10>(std::exception) + +## v as lvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = true, (v as X<20>) = works! + +## v as const lvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = true, (v as X<20>) = works! + +## v as rvalue reference + +v is empty = false +v is std::monostate = false +v is X< 0> = false, (v as X< 1>) = bad variant access +v is X< 1> = false, (v as X< 1>).to_string() = bad variant access +v is X<19> = false, (v as X<19>).to_string() = bad variant access +v is X<20> = true, (v as X<20>) = works! + diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-lifetime-safety-and-null-contracts.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-lifetime-safety-and-null-contracts.cpp.execution new file mode 100644 index 000000000..09c49d5dd --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-lifetime-safety-and-null-contracts.cpp.execution @@ -0,0 +1,2 @@ +sending error to my framework... [dynamic null dereference attempt detected] +from source location: mixed-lifetime-safety-and-null-contracts.cpp2(17) void try_pointer_stuff() diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-lifetime-safety-pointer-init-4.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-lifetime-safety-pointer-init-4.cpp.execution new file mode 100644 index 000000000..7ee4d37b2 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-lifetime-safety-pointer-init-4.cpp.execution @@ -0,0 +1 @@ +>> 42 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-multiple-return-values.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-multiple-return-values.cpp.execution new file mode 100644 index 000000000..b3fc65a7c --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-multiple-return-values.cpp.execution @@ -0,0 +1,2 @@ +a is 10 +b is xyzzy diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-out-destruction.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-out-destruction.cpp.execution new file mode 100644 index 000000000..df8e3e4ff --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-out-destruction.cpp.execution @@ -0,0 +1,21 @@ +enter main +enter f00 +enter f01 ++X 1 +exit f01 +-X 1 +exit f00 + +enter f10 +enter f11 +enter f12 +enter f13 +enter f14 ++X 2 +exit f14 +exit f13 +exit f12 +-X 2 +exit f11 +exit f10 +exit main diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-parameter-passing-generic-out.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-parameter-passing-generic-out.cpp.execution new file mode 100644 index 000000000..982a789cf --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-parameter-passing-generic-out.cpp.execution @@ -0,0 +1,2 @@ +42 +exxxx diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-parameter-passing.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-parameter-passing.cpp.execution new file mode 100644 index 000000000..256f7e186 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-parameter-passing.cpp.execution @@ -0,0 +1,2 @@ +123 +0 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-postexpression-with-capture.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-postexpression-with-capture.cpp.execution new file mode 100644 index 000000000..a17035eda --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-postexpression-with-capture.cpp.execution @@ -0,0 +1,2 @@ +xyzzy and plugh +xyzzyplugh diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-string-interpolation.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-string-interpolation.cpp.execution new file mode 100644 index 000000000..eebb290a9 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-string-interpolation.cpp.execution @@ -0,0 +1,17 @@ +a = 2, b = (empty) +a^2 + b = 46 +sv = my string_view +osv = (empty) +osv = string literal bound to optional string_view +var = (empty) +var = abracadabra +var = 2.718280 +mypair = (12, 3.400000) +tup1 = (12) +tup2 = (12, 3.400000) +tup3 = (12, 3.400000, 456) +p = (first, (empty)) +t = (3.140000, (empty), (empty)) +vv = 0 +vv = (1, 2.300000) +custom = (customize me - no cpp2::to_string overload exists for this type) diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-test-parens.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-test-parens.cpp.execution new file mode 100644 index 000000000..59967f29d --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-test-parens.cpp.execution @@ -0,0 +1,3 @@ +11 +12 +13*14 is 182 diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-type-safety-1.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-type-safety-1.cpp.execution new file mode 100644 index 000000000..f1a0d084e --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-type-safety-1.cpp.execution @@ -0,0 +1,6 @@ +1.1 is int? false +1 is int? true + +s* is Shape? true +s* is Circle? true +s* is Square? false diff --git a/regression-tests/test-results/gcc-15-c++2b/mixed-ufcs-multiple-template-arguments.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/mixed-ufcs-multiple-template-arguments.cpp.execution new file mode 100644 index 000000000..dec75369f --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/mixed-ufcs-multiple-template-arguments.cpp.execution @@ -0,0 +1,2 @@ +rain +rain diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-assert-expected-not-null.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-assert-expected-not-null.cpp.execution new file mode 100644 index 000000000..6e890f66c --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-assert-expected-not-null.cpp.execution @@ -0,0 +1 @@ +pure2-assert-expected-not-null.cpp2(15) int bad_expected_access(): Null safety violation: std::expected has an unexpected value diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-assert-optional-not-null.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-assert-optional-not-null.cpp.execution new file mode 100644 index 000000000..d474aedd2 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-assert-optional-not-null.cpp.execution @@ -0,0 +1 @@ +pure2-assert-optional-not-null.cpp2(14) int bad_optional_access(): Null safety violation: std::optional does not contain a value diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-assert-shared-ptr-not-null.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-assert-shared-ptr-not-null.cpp.execution new file mode 100644 index 000000000..0f68ae7f5 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-assert-shared-ptr-not-null.cpp.execution @@ -0,0 +1 @@ +pure2-assert-shared-ptr-not-null.cpp2(15) int bad_shared_ptr_access(): Null safety violation: std::shared_ptr is empty diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-assert-unique-ptr-not-null.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-assert-unique-ptr-not-null.cpp.execution new file mode 100644 index 000000000..02f6a7741 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-assert-unique-ptr-not-null.cpp.execution @@ -0,0 +1 @@ +pure2-assert-unique-ptr-not-null.cpp2(15) int bad_unique_ptr_access(): Null safety violation: std::unique_ptr is empty diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-autodiff-higher-order.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-autodiff-higher-order.cpp.execution new file mode 100644 index 000000000..84a5f58de --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-autodiff-higher-order.cpp.execution @@ -0,0 +1,240 @@ +diff(x + y) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x + y + x) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 7.000000 + d1 = 4.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x - y) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = -1.000000 + d1 = -1.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x - y - x) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = -3.000000 + d1 = -2.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x + y - x) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 3.000000 + d1 = 2.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x * y) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 6.000000 + d1 = 7.000000 + d2 = 4.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x * y * x) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 12.000000 + d1 = 20.000000 + d2 = 22.000000 + d3 = 12.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x / y) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 0.666667 + d1 = -0.111111 + d2 = 0.148148 + d3 = -0.296296 + d4 = 0.790123 + d5 = -2.633745 + d6 = 10.534979 +diff(x / y / y) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 0.222222 + d1 = -0.185185 + d2 = 0.296296 + d3 = -0.691358 + d4 = 2.106996 + d5 = -7.901235 + d6 = 35.116598 +diff(x * y / x) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 3.000000 + d1 = 2.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x * (x + y)) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 10.000000 + d1 = 11.000000 + d2 = 6.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x + x * y) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 8.000000 + d1 = 8.000000 + d2 = 4.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(+x + y)) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(-x + y)) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 1.000000 + d1 = 1.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x * func(x, y)) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 10.000000 + d1 = 11.000000 + d2 = 6.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(x * func_outer(x, y)) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 10.000000 + d1 = 11.000000 + d2 = 6.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(sin(x - y)) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = -0.841471 + d1 = -0.540302 + d2 = 0.841471 + d3 = 0.540302 + d4 = -0.841471 + d5 = -0.540302 + d6 = 0.841471 +diff(if branch) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 2.000000 + d1 = 1.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(if else branch) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 2.000000 + d1 = 1.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(direct return) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(intermediate var) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(intermediate passive var) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(intermediate untyped) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(intermediate default init) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(intermediate no init) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(while loop) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 8.000000 + d1 = 5.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(do while loop) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 8.000000 + d1 = 5.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(for loop) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(tye_outer.a + y) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 +diff(type_outer.add(y)) at (x = 2.000000, x_d = ( 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ), y = 3.000000, y_d = ( 2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 )): + r = 5.000000 + d1 = 3.000000 + d2 = 0.000000 + d3 = 0.000000 + d4 = 0.000000 + d5 = 0.000000 + d6 = 0.000000 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-autodiff.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-autodiff.cpp.execution new file mode 100644 index 000000000..863bd6bd5 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-autodiff.cpp.execution @@ -0,0 +1,46 @@ +diff(x + y) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(x + y + x) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 7.000000, r_d = 4.000000) +diff(x - y) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = -1.000000, r_d = -1.000000) +diff(x - y - x) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = -3.000000, r_d = -2.000000) +diff(x + y - x) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 3.000000, r_d = 2.000000) +diff(x * y) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 6.000000, r_d = 7.000000) +diff(x * y * x) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 12.000000, r_d = 20.000000) +diff(x / y) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 0.666667, r_d = -0.111111) +diff(x / y / y) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 0.222222, r_d = -0.185185) +diff(x * y / x) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 3.000000, r_d = 2.000000) +diff(x * (x + y)) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 10.000000, r_d = 11.000000) +diff(x + x * y) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 8.000000, r_d = 8.000000) +diff(+x + y)) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(-x + y)) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 1.000000, r_d = 1.000000) +diff(x * func(x, y)) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 10.000000, r_d = 11.000000) +diff(x * func_outer(x, y)) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 10.000000, r_d = 11.000000) +diff(sin(x - y)) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = -0.841471, r_d = -0.540302) +diff(if branch) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 2.000000, r_d = 1.000000) +diff(if else branch) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 2.000000, r_d = 1.000000) +diff(direct return) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(intermediate var) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(intermediate passive var) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(intermediate untyped) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(intermediate default init) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(intermediate no init) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(while loop) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 8.000000, r_d = 5.000000) +diff(do while loop) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 8.000000, r_d = 5.000000) +diff(for loop) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(tye_outer.a + y) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(type_outer.add(y)) at (x = 2.000000, x_d = 1.000000, y = 3.000000, y_d = 2.000000) = (r = 5.000000, r_d = 3.000000) +diff(x + y) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 5.000000, x_b = 1.000000, y_b = 1.000000) +diff(x + y + x) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 7.000000, x_b = 2.000000, y_b = 1.000000) +diff(x - y) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = -1.000000, x_b = 1.000000, y_b = -1.000000) +diff(x - y - x) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = -3.000000, x_b = 0.000000, y_b = -1.000000) +diff(x + y - x) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 3.000000, x_b = 0.000000, y_b = 1.000000) +diff(x * y) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 6.000000, x_b = 3.000000, y_b = 2.000000) +diff(x * y * x) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 12.000000, x_b = 12.000000, y_b = 4.000000) +diff(x / y) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 0.666667, x_b = 0.333333, y_b = -0.222222) +diff(x / y / y) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 0.222222, x_b = 0.111111, y_b = -0.148148) +diff(x * y / x) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 3.000000, x_b = 0.000000, y_b = 1.000000) +diff(x * (x + y)) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 10.000000, x_b = 7.000000, y_b = 2.000000) +diff(x + x * y) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 8.000000, x_b = 4.000000, y_b = 2.000000) +diff(sin(x-y)) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = -0.841471, x_b = 0.540302, y_b = -0.540302) +diff(x * func(x-y)) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 10.000000, x_b = 7.000000, y_b = 2.000000) +diff(x * func_outer(x-y)) at (x = 2.000000, y = 3.000000, r_b = 1.000000) = (r = 10.000000, x_b = 7.000000, y_b = 2.000000) +2nd order diff of x*x at 2.000000 = 2.000000 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-bounds-safety-span.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-bounds-safety-span.cpp.execution new file mode 100644 index 000000000..3a0304fa2 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-bounds-safety-span.cpp.execution @@ -0,0 +1,3 @@ +>> decorated +>> hello +>> world diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-break-continue.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-break-continue.cpp.execution new file mode 100644 index 000000000..c8af55771 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-break-continue.cpp.execution @@ -0,0 +1,26 @@ +while_continue_inner: + 00 inner 01 02 inner outer 10 inner 11 12 inner outer 20 inner 21 22 inner outer +while_continue_outer: + 00 inner 01 10 inner 11 20 inner 21 +while_break_inner: + 00 inner 01 outer 10 inner 11 outer 20 inner 21 outer +while_break_outer: + 00 inner 01 + +do_continue_inner: + 00 inner 01 02 inner outer 10 inner 11 12 inner outer 20 inner 21 22 inner outer +do_continue_outer: + 00 inner 01 10 inner 11 20 inner 21 +do_break_inner: + 00 inner 01 outer 10 inner 11 outer 20 inner 21 outer +do_break_outer: + 00 inner 01 + +for_continue_inner: + 00 inner 01 02 inner outer 10 inner 11 12 inner outer 20 inner 21 22 inner outer +for_continue_outer: + 00 inner 01 10 inner 11 20 inner 21 +for_break_inner: + 00 inner 01 outer 10 inner 11 outer 20 inner 21 outer +for_break_outer: + 00 inner 01 \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-memberwise-base-assignment.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-memberwise-base-assignment.cpp.execution new file mode 100644 index 000000000..566837e51 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-memberwise-base-assignment.cpp.execution @@ -0,0 +1,2 @@ +(out this, that) +(out this, that) diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-template-argument.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-template-argument.cpp.execution new file mode 100644 index 000000000..c508d5366 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-template-argument.cpp.execution @@ -0,0 +1 @@ +false diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-ufcs-arguments.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-ufcs-arguments.cpp.execution new file mode 100644 index 000000000..0e41b7819 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-bugfix-for-ufcs-arguments.cpp.execution @@ -0,0 +1,4 @@ +0123456789 +9 +0123456789 +9 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-chained-comparisons.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-chained-comparisons.cpp.execution new file mode 100644 index 000000000..b41a1bf75 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-chained-comparisons.cpp.execution @@ -0,0 +1,27 @@ +0 0 0: true false false +0 0 1: false false false +0 0 2: false false false +0 1 0: false false false +0 1 1: false true false +0 1 2: false true false +0 2 0: false false false +0 2 1: false false false +0 2 2: false true false +1 0 0: false false false +1 0 1: false false false +1 0 2: false false false +1 1 0: false false true +1 1 1: true false false +1 1 2: false false false +1 2 0: false false false +1 2 1: false false false +1 2 2: false true false +2 0 0: false false false +2 0 1: false false false +2 0 2: false false false +2 1 0: false false true +2 1 1: false false false +2 1 2: false false false +2 2 0: false false true +2 2 1: false false true +2 2 2: true false false diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-contracts.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-contracts.cpp.execution new file mode 100644 index 000000000..e8a01cd98 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-contracts.cpp.execution @@ -0,0 +1,3 @@ +1 +2 +4 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-default-arguments.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-default-arguments.cpp.execution new file mode 100644 index 000000000..0d1459552 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-default-arguments.cpp.execution @@ -0,0 +1,4 @@ +calling: int main(int, char**) +012 +a newer compiler +1, 1, 66 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-defaulted-comparisons-and-final-types.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-defaulted-comparisons-and-final-types.cpp.execution new file mode 100644 index 000000000..9ff824547 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-defaulted-comparisons-and-final-types.cpp.execution @@ -0,0 +1 @@ +less \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-enum.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-enum.cpp.execution new file mode 100644 index 000000000..7e6611f6d --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-enum.cpp.execution @@ -0,0 +1,36 @@ +x.to_string() is clubs +x2.to_string() is clubs +x3.to_string() is hearts +x3.to_code() is skat_game::hearts +x4.to_string() is hearts +with if else: clubs +with inspect: clubs + +file_attributes::cached.get_raw_value() is 1 +file_attributes::current.get_raw_value() is 2 +file_attributes::obsolete.get_raw_value() is 4 +file_attributes::cached_and_current.get_raw_value() is 3 +f. get_raw_value() is 1 +f2.get_raw_value() is 1 +f is (cached) +f2 is (cached) +f2 is (none) +f2 is (cached) +f. get_raw_value() is 1 +f2.get_raw_value() is 1 +f is (f2) is true +f2 is (f ) is true + +f is (cached, current, obsolete, cached_and_current) +f2 is (cached, current, cached_and_current) +f. get_raw_value() is 7 +f2.get_raw_value() is 3 +f == f2 is false +f is (f2) is false +f2 is (f ) is false +(f & f2) == f2 is true +inspecting f: includes all f2's flags ('cached' and 'current') +f_from_string is (cached, current, cached_and_current) +f_from_string is (current, obsolete) +f_from_string.to_code() is (file_attributes::current | file_attributes::obsolete) +f_from_string is (cached, obsolete) diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-expected-is-as.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-expected-is-as.cpp.execution new file mode 100644 index 000000000..5483d6cd7 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-expected-is-as.cpp.execution @@ -0,0 +1,15 @@ +ex1 is int +ex1 is 123 +ex1 as int = 123 +ex2 is unexpected and error is: -1 +ex2 is 'empty' aka unexpected and error is: -1 +ex2 as std::unexpected and error = -1 + +expected with value + ...integer 123 + +expected with unexpected + ...unexpected -1 + +expected with value + ...string Expect the unexpected diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-for-loop-range-with-lambda.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-for-loop-range-with-lambda.cpp.execution new file mode 100644 index 000000000..19b3a90b2 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-for-loop-range-with-lambda.cpp.execution @@ -0,0 +1 @@ +12345123451234512345 \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-forward-return.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-forward-return.cpp.execution new file mode 100644 index 000000000..f259f2362 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-forward-return.cpp.execution @@ -0,0 +1,2 @@ +4 +42 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-function-body-reflection.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-function-body-reflection.cpp.execution new file mode 100644 index 000000000..d2076f3f7 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-function-body-reflection.cpp.execution @@ -0,0 +1 @@ +calling generated function ns::add_1... ns::add_1(42) returned 43 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-function-multiple-forward-arguments.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-function-multiple-forward-arguments.cpp.execution new file mode 100644 index 000000000..8baef1b4a --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-function-multiple-forward-arguments.cpp.execution @@ -0,0 +1 @@ +abc diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-function-single-expression-body-default-return.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-function-single-expression-body-default-return.cpp.execution new file mode 100644 index 000000000..30f4cb910 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-function-single-expression-body-default-return.cpp.execution @@ -0,0 +1 @@ +hi ho hum \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-function-typeids.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-function-typeids.cpp.execution new file mode 100644 index 000000000..08f16f663 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-function-typeids.cpp.execution @@ -0,0 +1,17 @@ +hello world! +hello world! +Come in, Frodo +Come in, Sam +Come in awhile, but take some biscuits on your way out, Frodo! +Come in awhile, but take some biscuits on your way out, Sam! +fg_out initialized gandalf to: A Powerful Mage +pg_out initialized galadriel to: A Powerful Mage +I hear you've moving, Frodo? +I hear you've moving, Sam? +Inout Gandalf ... fh_forward returned: Gandalf +Inout Galadriel ... ph_forward returned: Galadriel +Inout Galadriel ... ph_forward2 returned: Galadriel +In Gandalf ... fh_out returned: yohoho +In Galadriel ... ph_out returned: yohoho +43 +44 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-hashable.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-hashable.cpp.execution new file mode 100644 index 000000000..a11f9eb59 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-hashable.cpp.execution @@ -0,0 +1 @@ +6443762454025613088 \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-hello.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-hello.cpp.execution new file mode 100644 index 000000000..c8848197e --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-hello.cpp.execution @@ -0,0 +1 @@ +Hello [world] diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-initialization-safety-with-else-if.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-initialization-safety-with-else-if.cpp.execution new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-initialization-safety-with-else-if.cpp.execution @@ -0,0 +1 @@ +1 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-expression-in-generic-function-multiple-types.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-expression-in-generic-function-multiple-types.cpp.execution new file mode 100644 index 000000000..fd5a6cdff --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-expression-in-generic-function-multiple-types.cpp.execution @@ -0,0 +1,8 @@ + double value is not an int or string + variant value is not an int or string + any value is "xyzzy" + optional value is not an int or string + int value is integer 42 + variant value is integer 1 + any value is integer 2 + optional value is integer 3 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-expression-with-as-in-generic-function.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-expression-with-as-in-generic-function.cpp.execution new file mode 100644 index 000000000..3cd874b4e --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-expression-with-as-in-generic-function.cpp.execution @@ -0,0 +1,3 @@ + syzygy value is not an int + 1 value is 1 + 1.100000 value is not an int diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-fallback-with-variant-any-optional.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-fallback-with-variant-any-optional.cpp.execution new file mode 100644 index 000000000..a5cbcefe9 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-fallback-with-variant-any-optional.cpp.execution @@ -0,0 +1,11 @@ + +All these cases satisfy "matches std::string" + +variant + ... matches std::string + +string + ... matches std::string + +optional + ... matches std::string diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-generic-void-empty-with-variant-any-optional.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-generic-void-empty-with-variant-any-optional.cpp.execution new file mode 100644 index 000000000..a2df8769d --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-inspect-generic-void-empty-with-variant-any-optional.cpp.execution @@ -0,0 +1,17 @@ + +All these cases satisfy "VOYDE AND EMPTIE" + +unique_ptr + ... VOYDE AND EMPTIE + +vector::iterator + ... VOYDE AND EMPTIE + +variant + ... VOYDE AND EMPTIE + +any + ... VOYDE AND EMPTIE + +optional + ... VOYDE AND EMPTIE diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-interpolation.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-interpolation.cpp.execution new file mode 100644 index 000000000..aeae30274 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-interpolation.cpp.execution @@ -0,0 +1,13 @@ +g0g0g +0g0g +0g0 +00 +"0" +"0 +" + +pl(ug$h +0pl(ug$h +Dog kennel color mauve price 3.14 in stock = true +Dog kennel color mauve price 3.14 in stock = true +complex: (1.2,3.4) diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-intro-example-hello-2022.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-intro-example-hello-2022.cpp.execution new file mode 100644 index 000000000..8e8c5ee29 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-intro-example-hello-2022.cpp.execution @@ -0,0 +1,2 @@ +>> [hello] - length 7 +>> [2022] - length 6 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-intro-example-three-loops.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-intro-example-three-loops.cpp.execution new file mode 100644 index 000000000..c218d85df --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-intro-example-three-loops.cpp.execution @@ -0,0 +1,8 @@ +>> hello +>> big +>> world + ** ** ** +>> [hello] +>> [big] +>> [world] +>> end of program diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-free-functions-predicate.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-free-functions-predicate.cpp.execution new file mode 100644 index 000000000..c8a07e430 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-free-functions-predicate.cpp.execution @@ -0,0 +1,6 @@ +3.140000 is double bigger than 3 +3.140000 is bigger than 3 +42 is integer bigger than 3 +42 is bigger than 3 +a is integer bigger than 3 +a is bigger than 3 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-polymorphic-types.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-polymorphic-types.cpp.execution new file mode 100644 index 000000000..3009b3c17 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-polymorphic-types.cpp.execution @@ -0,0 +1,8 @@ +vc is VC VA<0> VA<1> +p0* is VC VA<0> VA<1> +p1* is VC VA<0> VA<1> +vc& is *VC *VA<0> *VA<1> +p0 is *VC *VA<0> *VA<1> +p1 is *VC *VA<0> *VA<1> +nullptr is empty +A is A diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-unnamed-predicates.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-unnamed-predicates.cpp.execution new file mode 100644 index 000000000..c8a07e430 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-unnamed-predicates.cpp.execution @@ -0,0 +1,6 @@ +3.140000 is double bigger than 3 +3.140000 is bigger than 3 +42 is integer bigger than 3 +42 is bigger than 3 +a is integer bigger than 3 +a is bigger than 3 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-variable-and-value.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-variable-and-value.cpp.execution new file mode 100644 index 000000000..a9bc0680a --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-is-with-variable-and-value.cpp.execution @@ -0,0 +1,9 @@ +3.14: unknown +42: 42 +WithOp(): unknown +WithGenOp(): unknown +Cmp(): comparable +std::string("text"): text +"text": text +std::string_view("text"): text +:std::vector = ('t','e','x','t','\0'): unknown diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-last-use.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-last-use.cpp.execution new file mode 100644 index 000000000..4632e068d --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-last-use.cpp.execution @@ -0,0 +1 @@ +123456 \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-look-up-parameter-across-unnamed-function.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-look-up-parameter-across-unnamed-function.cpp.execution new file mode 100644 index 000000000..871727de1 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-look-up-parameter-across-unnamed-function.cpp.execution @@ -0,0 +1 @@ +84 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-main-args.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-main-args.cpp.execution new file mode 100644 index 000000000..bd992e432 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-main-args.cpp.execution @@ -0,0 +1,2 @@ +args.argc is 1 +args.argv[0] is test.exe diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-more-wildcards.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-more-wildcards.cpp.execution new file mode 100644 index 000000000..e37d6cb21 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-more-wildcards.cpp.execution @@ -0,0 +1,2 @@ +yes, less +yes, always diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-print.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-print.cpp.execution new file mode 100644 index 000000000..4e4b4573d --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-print.cpp.execution @@ -0,0 +1,2 @@ +43 +forty-and-three diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-range-operators.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-range-operators.cpp.execution new file mode 100644 index 000000000..9937f85c3 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-range-operators.cpp.execution @@ -0,0 +1,49 @@ +We have some alpabetical animals: + Aardvark + Baboon + Cat + Dolphin + Elephant + Flicker + Grue + Wumpus + +And from indexes 1..=5 they are: + 1 Baboon + 2 Cat + 3 Dolphin + 4 Elephant + 5 Flicker + +And test the range when mixing signed & unsigned types: + 0 Aardvark + 1 Baboon + 2 Cat + 3 Dolphin + 4 Elephant + 5 Flicker + 6 Grue + 7 Wumpus + +Make sure non-random-access iterators work: + Hokey + Pokey + +Make sure .sum works: +210 +190 + +Make sure .contains works: +false +true +true +true +false +false +true +true +false +false + +Make sure views::take works: +1 2 3 4 5 2 3 4 \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-raw-string-literal-and-interpolation.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-raw-string-literal-and-interpolation.cpp.execution new file mode 100644 index 000000000..c48e2bd60 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-raw-string-literal-and-interpolation.cpp.execution @@ -0,0 +1,17 @@ +this is a string +raw string without interpolation +this is raw string literal + +that can last for multiple + +lines +this is raw string literal +that can last for multiple +lines +42 R"(this can be added too)" +calculations like m["one"] + m["two"] = 3 also works +at the beginning of the line!!! + + + 4242 +1.2.0.42 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex-general.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex-general.cpp.execution new file mode 100644 index 000000000..c44d08490 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex-general.cpp.execution @@ -0,0 +1,11 @@ +Running tests_01_char_matcher: +Not full match fails: 0 +Full match is ok: 1 +Search finds at position 1: 1 +Search finds at position 3: 3 +Find all finds at position: 1 +Find all finds at position: 4 +Find all finds at position: 7 +Find all found 3 matched: 3 +Find all finds at position: 2 +Find all found 1 match: 1 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_01_char_matcher.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_01_char_matcher.cpp.execution new file mode 100644 index 000000000..af124736e --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_01_char_matcher.cpp.execution @@ -0,0 +1,14 @@ +Running tests_01_char_matcher: +01_y: OK regex: abc parsed_regex: abc str: abc result_expr: $& expected_results abc +02_y: OK regex: abc parsed_regex: abc str: abc result_expr: $-[0] expected_results 0 +03_y: OK regex: abc parsed_regex: abc str: abc result_expr: $+[0] expected_results 3 +04_n: OK regex: abc parsed_regex: abc str: xbc result_expr: - expected_results - +05_n: OK regex: abc parsed_regex: abc str: axc result_expr: - expected_results - +06_n: OK regex: abc parsed_regex: abc str: abx result_expr: - expected_results - +07_y: OK regex: abc parsed_regex: abc str: xabcy result_expr: $& expected_results abc +08_y: OK regex: abc parsed_regex: abc str: xabcy result_expr: $-[0] expected_results 1 +09_y: OK regex: abc parsed_regex: abc str: xabcy result_expr: $+[0] expected_results 4 +10_y: OK regex: abc parsed_regex: abc str: ababc result_expr: $& expected_results abc +11_y: OK regex: abc parsed_regex: abc str: ababc result_expr: $-[0] expected_results 2 +12_y: OK regex: abc parsed_regex: abc str: ababc result_expr: $+[0] expected_results 5 + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_02_ranges.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_02_ranges.cpp.execution new file mode 100644 index 000000000..dc0b36002 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_02_ranges.cpp.execution @@ -0,0 +1,42 @@ +Running tests_02_ranges: +01_y: OK regex: ab*c parsed_regex: ab*c str: abc result_expr: $& expected_results abc +02_y: OK regex: ab*c parsed_regex: ab*c str: abc result_expr: $-[0] expected_results 0 +03_y: OK regex: ab*c parsed_regex: ab*c str: abc result_expr: $+[0] expected_results 3 +04_y: OK regex: ab*bc parsed_regex: ab*bc str: abc result_expr: $& expected_results abc +05_y: OK regex: ab*bc parsed_regex: ab*bc str: abc result_expr: $-[0] expected_results 0 +06_y: OK regex: ab*bc parsed_regex: ab*bc str: abc result_expr: $+[0] expected_results 3 +07_y: OK regex: ab*bc parsed_regex: ab*bc str: abbc result_expr: $& expected_results abbc +08_y: OK regex: ab*bc parsed_regex: ab*bc str: abbc result_expr: $-[0] expected_results 0 +09_y: OK regex: ab*bc parsed_regex: ab*bc str: abbc result_expr: $+[0] expected_results 4 +10_y: OK regex: ab*bc parsed_regex: ab*bc str: abbbbc result_expr: $& expected_results abbbbc +11_y: OK regex: ab*bc parsed_regex: ab*bc str: abbbbc result_expr: $-[0] expected_results 0 +12_y: OK regex: ab*bc parsed_regex: ab*bc str: abbbbc result_expr: $+[0] expected_results 6 +13_y: OK regex: ab{0,}bc parsed_regex: ab{0,}bc str: abbbbc result_expr: $& expected_results abbbbc +14_y: OK regex: ab{0,}bc parsed_regex: ab{0,}bc str: abbbbc result_expr: $-[0] expected_results 0 +15_y: OK regex: ab{0,}bc parsed_regex: ab{0,}bc str: abbbbc result_expr: $+[0] expected_results 6 +16_y: OK regex: ab+bc parsed_regex: ab+bc str: abbc result_expr: $& expected_results abbc +17_y: OK regex: ab+bc parsed_regex: ab+bc str: abbc result_expr: $-[0] expected_results 0 +18_y: OK regex: ab+bc parsed_regex: ab+bc str: abbc result_expr: $+[0] expected_results 4 +19_n: OK regex: ab+bc parsed_regex: ab+bc str: abc result_expr: - expected_results - +20_n: OK regex: ab+bc parsed_regex: ab+bc str: abq result_expr: - expected_results - +21_n: OK regex: ab{1,}bc parsed_regex: ab{1,}bc str: abq result_expr: - expected_results - +22_y: OK regex: ab+bc parsed_regex: ab+bc str: abbbbc result_expr: $& expected_results abbbbc +23_y: OK regex: ab+bc parsed_regex: ab+bc str: abbbbc result_expr: $-[0] expected_results 0 +24_y: OK regex: ab+bc parsed_regex: ab+bc str: abbbbc result_expr: $+[0] expected_results 6 +25_y: OK regex: ab{1,}bc parsed_regex: ab{1,}bc str: abbbbc result_expr: $& expected_results abbbbc +26_y: OK regex: ab{1,}bc parsed_regex: ab{1,}bc str: abbbbc result_expr: $-[0] expected_results 0 +27_y: OK regex: ab{1,}bc parsed_regex: ab{1,}bc str: abbbbc result_expr: $+[0] expected_results 6 +28_y: OK regex: ab{1,3}bc parsed_regex: ab{1,3}bc str: abbbbc result_expr: $& expected_results abbbbc +29_y: OK regex: ab{1,3}bc parsed_regex: ab{1,3}bc str: abbbbc result_expr: $-[0] expected_results 0 +30_y: OK regex: ab{1,3}bc parsed_regex: ab{1,3}bc str: abbbbc result_expr: $+[0] expected_results 6 +31_y: OK regex: ab{3,4}bc parsed_regex: ab{3,4}bc str: abbbbc result_expr: $& expected_results abbbbc +32_y: OK regex: ab{3,4}bc parsed_regex: ab{3,4}bc str: abbbbc result_expr: $-[0] expected_results 0 +33_y: OK regex: ab{3,4}bc parsed_regex: ab{3,4}bc str: abbbbc result_expr: $+[0] expected_results 6 +34_n: OK regex: ab{4,5}bc parsed_regex: ab{4,5}bc str: abbbbc result_expr: - expected_results - +35_y: OK regex: ab?bc parsed_regex: ab?bc str: abbc result_expr: $& expected_results abbc +36_y: OK regex: ab?bc parsed_regex: ab?bc str: abc result_expr: $& expected_results abc +37_y: OK regex: ab{0,1}bc parsed_regex: ab{0,1}bc str: abc result_expr: $& expected_results abc +38_n: OK regex: ab?bc parsed_regex: ab?bc str: abbbbc result_expr: - expected_results - +39_y: OK regex: ab?c parsed_regex: ab?c str: abc result_expr: $& expected_results abc +40_y: OK regex: ab{0,1}c parsed_regex: ab{0,1}c str: abc result_expr: $& expected_results abc + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_03_wildcard.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_03_wildcard.cpp.execution new file mode 100644 index 000000000..f3f0ea9cc --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_03_wildcard.cpp.execution @@ -0,0 +1,22 @@ +Running tests_03_wildcard: +01_y: OK regex: .{1} parsed_regex: .{1} str: abbbbc result_expr: $& expected_results a +02_y: OK regex: .{1} parsed_regex: .{1} str: abbbbc result_expr: $-[0] expected_results 0 +03_y: OK regex: .{1} parsed_regex: .{1} str: abbbbc result_expr: $+[0] expected_results 1 +04_y: OK regex: .{3,4} parsed_regex: .{3,4} str: abbbbc result_expr: $& expected_results abbb +05_y: OK regex: .{3,4} parsed_regex: .{3,4} str: abbbbc result_expr: $-[0] expected_results 0 +06_y: OK regex: .{3,4} parsed_regex: .{3,4} str: abbbbc result_expr: $+[0] expected_results 4 +07_y: OK regex: \N{1} parsed_regex: \N{1} str: abbbbc result_expr: $& expected_results a +08_y: OK regex: \N{1} parsed_regex: \N{1} str: abbbbc result_expr: $-[0] expected_results 0 +09_y: OK regex: \N{1} parsed_regex: \N{1} str: abbbbc result_expr: $+[0] expected_results 1 +10_y: OK regex: \N{3,4} parsed_regex: \N{3,4} str: abbbbc result_expr: $& expected_results abbb +11_y: OK regex: \N{3,4} parsed_regex: \N{3,4} str: abbbbc result_expr: $-[0] expected_results 0 +12_y: OK regex: \N{3,4} parsed_regex: \N{3,4} str: abbbbc result_expr: $+[0] expected_results 4 +13_y: OK Warning: Parsed regex does not match. regex: \N{ 3 , 4 } parsed_regex: \N{3,4} str: abbbbc result_expr: $+[0] expected_results 4 +14_y: OK regex: a.c parsed_regex: a.c str: abc result_expr: $& expected_results abc +15_y: OK regex: a.c parsed_regex: a.c str: axc result_expr: $& expected_results axc +16_y: OK regex: a\Nc parsed_regex: a\Nc str: abc result_expr: $& expected_results abc +17_y: OK regex: a.*c parsed_regex: a.*c str: axyzc result_expr: $& expected_results axyzc +18_y: OK regex: a\N*c parsed_regex: a\N*c str: axyzc result_expr: $& expected_results axyzc +19_n: OK regex: a.*c parsed_regex: a.*c str: axyzd result_expr: - expected_results - +20_n: OK regex: a\N*c parsed_regex: a\N*c str: axyzd result_expr: - expected_results - + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_04_start_end.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_04_start_end.cpp.execution new file mode 100644 index 000000000..a1e2b9b63 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_04_start_end.cpp.execution @@ -0,0 +1,12 @@ +Running tests_04_start_end: +01_y: OK regex: ^abc$ parsed_regex: ^abc$ str: abc result_expr: $& expected_results abc +02_n: OK regex: ^abc$ parsed_regex: ^abc$ str: abcc result_expr: - expected_results - +03_y: OK regex: ^abc parsed_regex: ^abc str: abcc result_expr: $& expected_results abc +04_n: OK regex: ^abc$ parsed_regex: ^abc$ str: aabc result_expr: - expected_results - +05_y: OK regex: abc$ parsed_regex: abc$ str: aabc result_expr: $& expected_results abc +06_n: OK regex: abc$ parsed_regex: abc$ str: aabcd result_expr: - expected_results - +07_y: OK regex: ^ parsed_regex: ^ str: abc result_expr: $& expected_results +08_y: OK regex: $ parsed_regex: $ str: abc result_expr: $& expected_results +09_n: OK regex: $b parsed_regex: $b str: b result_expr: - expected_results - +10_n: OK regex: \GX.*X parsed_regex: \GX.*X str: aaaXbX result_expr: - expected_results - + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_05_classes.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_05_classes.cpp.execution new file mode 100644 index 000000000..306bf3395 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_05_classes.cpp.execution @@ -0,0 +1,21 @@ +Running tests_05_classes: +01_n: OK regex: a[bc]d parsed_regex: a[bc]d str: abc result_expr: - expected_results - +02_y: OK regex: a[bc]d parsed_regex: a[bc]d str: abd result_expr: $& expected_results abd +03_y: OK regex: a[b]d parsed_regex: a[b]d str: abd result_expr: $& expected_results abd +04_y: OK regex: [a][b][d] parsed_regex: [a][b][d] str: abd result_expr: $& expected_results abd +05_y: OK regex: .[b]. parsed_regex: .[b]. str: abd result_expr: $& expected_results abd +06_n: OK regex: .[b]. parsed_regex: .[b]. str: aBd result_expr: - expected_results - +07_n: OK regex: a[b-d]e parsed_regex: a[b-d]e str: abd result_expr: - expected_results - +08_y: OK regex: a[b-d]e parsed_regex: a[b-d]e str: ace result_expr: $& expected_results ace +09_y: OK regex: a[b-d] parsed_regex: a[b-d] str: aac result_expr: $& expected_results ac +10_y: OK regex: a[-b] parsed_regex: a[-b] str: a- result_expr: $& expected_results a- +11_y: OK regex: a[b-] parsed_regex: a[b-] str: a- result_expr: $& expected_results a- +12_y: OK regex: a] parsed_regex: a] str: a] result_expr: $& expected_results a] +13_y: OK regex: a[]]b parsed_regex: a[]]b str: a]b result_expr: $& expected_results a]b +14_y: OK regex: a[^bc]d parsed_regex: a[^bc]d str: aed result_expr: $& expected_results aed +15_n: OK regex: a[^bc]d parsed_regex: a[^bc]d str: abd result_expr: - expected_results - +16_y: OK regex: a[^-b]c parsed_regex: a[^-b]c str: adc result_expr: $& expected_results adc +17_n: OK regex: a[^-b]c parsed_regex: a[^-b]c str: a-c result_expr: - expected_results - +18_n: OK regex: a[^]b]c parsed_regex: a[^]b]c str: a]c result_expr: - expected_results - +19_y: OK regex: a[^]b]c parsed_regex: a[^]b]c str: adc result_expr: $& expected_results adc + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_06_boundaries.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_06_boundaries.cpp.execution new file mode 100644 index 000000000..420a4c587 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_06_boundaries.cpp.execution @@ -0,0 +1,19 @@ +Running tests_06_boundaries: +01_y: OK regex: \ba\b parsed_regex: \ba\b str: a- result_expr: - expected_results - +02_y: OK regex: \ba\b parsed_regex: \ba\b str: -a result_expr: - expected_results - +03_y: OK regex: \ba\b parsed_regex: \ba\b str: -a- result_expr: - expected_results - +04_n: OK regex: \by\b parsed_regex: \by\b str: xy result_expr: - expected_results - +05_n: OK regex: \by\b parsed_regex: \by\b str: yz result_expr: - expected_results - +06_n: OK regex: \by\b parsed_regex: \by\b str: xyz result_expr: - expected_results - +07_n: OK regex: \Ba\B parsed_regex: \Ba\B str: a- result_expr: - expected_results - +08_n: OK regex: \Ba\B parsed_regex: \Ba\B str: -a result_expr: - expected_results - +09_n: OK regex: \Ba\B parsed_regex: \Ba\B str: -a- result_expr: - expected_results - +10_y: OK regex: \By\b parsed_regex: \By\b str: xy result_expr: - expected_results - +11_y: OK regex: \By\b parsed_regex: \By\b str: xy result_expr: $-[0] expected_results 1 +12_y: OK regex: \By\b parsed_regex: \By\b str: xy result_expr: $+[0] expected_results 2 +13_y: OK regex: \By\b parsed_regex: \By\b str: xy result_expr: - expected_results - +14_y: OK regex: \by\B parsed_regex: \by\B str: yz result_expr: - expected_results - +15_y: OK regex: \By\B parsed_regex: \By\B str: xyz result_expr: - expected_results - +16_n: OK regex: \b parsed_regex: \b str: result_expr: - expected_results - +17_y: OK regex: \B parsed_regex: \B str: result_expr: - expected_results - + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_07_short_classes.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_07_short_classes.cpp.execution new file mode 100644 index 000000000..519c05f92 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_07_short_classes.cpp.execution @@ -0,0 +1,26 @@ +Running tests_07_short_classes: +01_y: OK regex: \w parsed_regex: \w str: a result_expr: - expected_results - +02_n: OK regex: \w parsed_regex: \w str: - result_expr: - expected_results - +03_n: OK regex: \W parsed_regex: \W str: a result_expr: - expected_results - +04_y: OK regex: \W parsed_regex: \W str: - result_expr: - expected_results - +05_y: OK regex: a\sb parsed_regex: a\sb str: a b result_expr: - expected_results - +06_n: OK regex: a\sb parsed_regex: a\sb str: a-b result_expr: - expected_results - +07_n: OK regex: a\Sb parsed_regex: a\Sb str: a b result_expr: - expected_results - +08_y: OK regex: a\Sb parsed_regex: a\Sb str: a-b result_expr: - expected_results - +09_y: OK regex: \d parsed_regex: \d str: 1 result_expr: - expected_results - +10_n: OK regex: \d parsed_regex: \d str: - result_expr: - expected_results - +11_n: OK regex: \D parsed_regex: \D str: 1 result_expr: - expected_results - +12_y: OK regex: \D parsed_regex: \D str: - result_expr: - expected_results - +13_y: OK regex: [\w] parsed_regex: [\w] str: a result_expr: - expected_results - +14_n: OK regex: [\w] parsed_regex: [\w] str: - result_expr: - expected_results - +15_n: OK regex: [\W] parsed_regex: [\W] str: a result_expr: - expected_results - +16_y: OK regex: [\W] parsed_regex: [\W] str: - result_expr: - expected_results - +17_y: OK regex: a[\s]b parsed_regex: a[\s]b str: a b result_expr: - expected_results - +18_n: OK regex: a[\s]b parsed_regex: a[\s]b str: a-b result_expr: - expected_results - +19_n: OK regex: a[\S]b parsed_regex: a[\S]b str: a b result_expr: - expected_results - +20_y: OK regex: a[\S]b parsed_regex: a[\S]b str: a-b result_expr: - expected_results - +21_y: OK regex: [\d] parsed_regex: [\d] str: 1 result_expr: - expected_results - +22_n: OK regex: [\d] parsed_regex: [\d] str: - result_expr: - expected_results - +23_n: OK regex: [\D] parsed_regex: [\D] str: 1 result_expr: - expected_results - +24_y: OK regex: [\D] parsed_regex: [\D] str: - result_expr: - expected_results - + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_08_alternatives.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_08_alternatives.cpp.execution new file mode 100644 index 000000000..c12fd2afe --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_08_alternatives.cpp.execution @@ -0,0 +1,4 @@ +Running tests_08_alternatives: +01_y: OK regex: ab|cd parsed_regex: ab|cd str: abc result_expr: $& expected_results ab +02_y: OK regex: ab|cd parsed_regex: ab|cd str: abcd result_expr: $& expected_results ab + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_09_groups.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_09_groups.cpp.execution new file mode 100644 index 000000000..05df860f9 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_09_groups.cpp.execution @@ -0,0 +1,13 @@ +Running tests_09_groups: +01_y: OK regex: ()ef parsed_regex: ()ef str: def result_expr: $&-$1 expected_results ef- +02_y: OK regex: ()ef parsed_regex: ()ef str: def result_expr: $-[0] expected_results 1 +03_y: OK regex: ()ef parsed_regex: ()ef str: def result_expr: $+[0] expected_results 3 +04_y: OK regex: ()ef parsed_regex: ()ef str: def result_expr: $-[1] expected_results 1 +05_y: OK regex: ()ef parsed_regex: ()ef str: def result_expr: $+[1] expected_results 1 +06_y: OK regex: ((a)) parsed_regex: ((a)) str: abc result_expr: $&-$1-$2 expected_results a-a-a +07_y: OK regex: ((a)) parsed_regex: ((a)) str: abc result_expr: $-[0]-$-[1]-$-[2] expected_results 0-0-0 +08_y: OK regex: ((a)) parsed_regex: ((a)) str: abc result_expr: $+[0]-$+[1]-$+[2] expected_results 1-1-1 +09_y: OK regex: (a)b(c) parsed_regex: (a)b(c) str: abc result_expr: $&-$1-$2 expected_results abc-a-c +10_y: OK regex: (a)b(c) parsed_regex: (a)b(c) str: abc result_expr: $-[0]-$-[1]-$-[2] expected_results 0-0-2 +11_y: OK regex: (a)b(c) parsed_regex: (a)b(c) str: abc result_expr: $+[0]-$+[1]-$+[2] expected_results 3-1-3 + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_10_escapes.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_10_escapes.cpp.execution new file mode 100644 index 000000000..7f23465cb --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_10_escapes.cpp.execution @@ -0,0 +1,22 @@ +Running tests_10_escapes: +01_y: OK regex: a\(b parsed_regex: a\(b str: a(b result_expr: $&-$1 expected_results a(b- +02_y: OK regex: a\(*b parsed_regex: a\(*b str: ab result_expr: $& expected_results ab +03_y: OK regex: a\(*b parsed_regex: a\(*b str: a((b result_expr: $& expected_results a((b +04_y: OK regex: a\\b parsed_regex: a\\b str: a\b result_expr: $& expected_results a\b +05_y: OK regex: foo(\h+)bar parsed_regex: foo(\h+)bar str: foo\tbar result_expr: $1 expected_results \t +06_y: OK regex: (\H+)(\h) parsed_regex: (\H+)(\h) str: foo\tbar result_expr: $1-$2 expected_results foo-\t +07_y: OK regex: (\h+)(\H) parsed_regex: (\h+)(\H) str: foo\tbar result_expr: $1-$2 expected_results \t-b +08_y: OK regex: foo(\h)bar parsed_regex: foo(\h)bar str: foo\tbar result_expr: $1 expected_results \t +09_y: OK regex: (\H)(\h) parsed_regex: (\H)(\h) str: foo\tbar result_expr: $1-$2 expected_results o-\t +10_y: OK regex: (\h)(\H) parsed_regex: (\h)(\H) str: foo\tbar result_expr: $1-$2 expected_results \t-b +11_y: OK regex: foo(\v+)bar parsed_regex: foo(\v+)bar str: foo\r\n\r\n\nbar result_expr: $1 expected_results \r\n\r\n\n +12_y: OK regex: (\V+)(\v) parsed_regex: (\V+)(\v) str: foo\r\n\r\n\nbar result_expr: $1-$2 expected_results foo-\r +13_y: OK regex: (\v+)(\V) parsed_regex: (\v+)(\V) str: foo\r\n\r\n\nbar result_expr: $1-$2 expected_results \r\n\r\n\n-b +14_y: OK regex: foo(\v)bar parsed_regex: foo(\v)bar str: foo\rbar result_expr: $1 expected_results \r +15_y: OK regex: (\V)(\v) parsed_regex: (\V)(\v) str: foo\rbar result_expr: $1-$2 expected_results o-\r +16_y: OK regex: (\v)(\V) parsed_regex: (\v)(\V) str: foo\rbar result_expr: $1-$2 expected_results \r-b +17_y: OK regex: foo\t\n\r\f\a\ebar parsed_regex: foo\t\n\r\f\a\ebar str: foo\t\n\r\f\a\ebar result_expr: $& expected_results foo\t\n\r\f\a\ebar +18_y: OK regex: foo\Kbar parsed_regex: foo\Kbar str: foobar result_expr: $& expected_results bar +19_y: OK regex: \x41\x42 parsed_regex: \x41\x42 str: AB result_expr: $& expected_results AB +20_y: OK regex: \101\o{102} parsed_regex: \101\o{102} str: AB result_expr: $& expected_results AB + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_11_group_references.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_11_group_references.cpp.execution new file mode 100644 index 000000000..724d0085a --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_11_group_references.cpp.execution @@ -0,0 +1,26 @@ +Running tests_11_group_references: +01_y: OK regex: (foo)(\g-2) parsed_regex: (foo)(\g-2) str: foofoo result_expr: $1-$2 expected_results foo-foo +02_y: OK regex: (foo)(\g-2)(foo)(\g-2) parsed_regex: (foo)(\g-2)(foo)(\g-2) str: foofoofoofoo result_expr: $1-$2-$3-$4 expected_results foo-foo-foo-foo +03_y: OK regex: (([abc]+) \g-1)(([abc]+) \g{-1}) parsed_regex: (([abc]+) \g-1)(([abc]+) \g{-1}) str: abc abccba cba result_expr: $2-$4 expected_results abc-cba +04_y: OK regex: (a)(b)(c)\g1\g2\g3 parsed_regex: (a)(b)(c)\g1\g2\g3 str: abcabc result_expr: $1$2$3 expected_results abc +05_y: OK regex: /(?'n'foo) \g{n}/ parsed_regex: /(?'n'foo) \g{n}/ str: ..foo foo.. result_expr: $1 expected_results foo +06_y: OK regex: /(?'n'foo) \g{ n }/ parsed_regex: /(?'n'foo) \g{ n }/ str: ..foo foo.. result_expr: $1 expected_results foo +07_yM: OK regex: /(?'n'foo) \g{n}/ parsed_regex: /(?'n'foo) \g{n}/ str: ..foo foo.. result_expr: $+{n} expected_results foo +08_y: OK regex: /(?foo) \g{n}/ parsed_regex: /(?foo) \g{n}/ str: ..foo foo.. result_expr: $1 expected_results foo +09_yM: OK regex: /(?foo) \g{n}/ parsed_regex: /(?foo) \g{n}/ str: ..foo foo.. result_expr: $+{n} expected_results foo +10_y: OK regex: /(?as) (\w+) \g{as} (\w+)/ parsed_regex: /(?as) (\w+) \g{as} (\w+)/ str: as easy as pie result_expr: $1-$2-$3 expected_results as-easy-pie +11_y: OK regex: /(?'n'foo) \k/ parsed_regex: /(?'n'foo) \k/ str: ..foo foo.. result_expr: $1 expected_results foo +12_yM: OK regex: /(?'n'foo) \k/ parsed_regex: /(?'n'foo) \k/ str: ..foo foo.. result_expr: $+{n} expected_results foo +13_y: OK regex: /(?foo) \k'n'/ parsed_regex: /(?foo) \k'n'/ str: ..foo foo.. result_expr: $1 expected_results foo +14_yM: OK regex: /(?foo) \k'n'/ parsed_regex: /(?foo) \k'n'/ str: ..foo foo.. result_expr: $+{n} expected_results foo +15_yM: OK regex: /(?'a1'foo) \k'a1'/ parsed_regex: /(?'a1'foo) \k'a1'/ str: ..foo foo.. result_expr: $+{a1} expected_results foo +16_yM: OK regex: /(?foo) \k/ parsed_regex: /(?foo) \k/ str: ..foo foo.. result_expr: $+{a1} expected_results foo +17_yM: OK regex: /(?'_'foo) \k'_'/ parsed_regex: /(?'_'foo) \k'_'/ str: ..foo foo.. result_expr: $+{_} expected_results foo +18_yM: OK regex: /(?<_>foo) \k<_>/ parsed_regex: /(?<_>foo) \k<_>/ str: ..foo foo.. result_expr: $+{_} expected_results foo +19_yM: OK regex: /(?'_0_'foo) \k'_0_'/ parsed_regex: /(?'_0_'foo) \k'_0_'/ str: ..foo foo.. result_expr: $+{_0_} expected_results foo +20_yM: OK regex: /(?<_0_>foo) \k<_0_>/ parsed_regex: /(?<_0_>foo) \k<_0_>/ str: ..foo foo.. result_expr: $+{_0_} expected_results foo +21_y: OK regex: /(?as) (\w+) \k (\w+)/ parsed_regex: /(?as) (\w+) \k (\w+)/ str: as easy as pie result_expr: $1-$2-$3 expected_results as-easy-pie +22_y: OK regex: /(?as) (\w+) \k{as} (\w+)/ parsed_regex: /(?as) (\w+) \k{as} (\w+)/ str: as easy as pie result_expr: $1-$2-$3 expected_results as-easy-pie +23_y: OK regex: /(?as) (\w+) \k'as' (\w+)/ parsed_regex: /(?as) (\w+) \k'as' (\w+)/ str: as easy as pie result_expr: $1-$2-$3 expected_results as-easy-pie +24_y: OK regex: /(?as) (\w+) \k{ as } (\w+)/ parsed_regex: /(?as) (\w+) \k{ as } (\w+)/ str: as easy as pie result_expr: $1-$2-$3 expected_results as-easy-pie + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_12_case_insensitive.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_12_case_insensitive.cpp.execution new file mode 100644 index 000000000..4939deb24 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_12_case_insensitive.cpp.execution @@ -0,0 +1,121 @@ +Running tests_12_case_insensitive: +01_y: OK regex: 'abc'i parsed_regex: 'abc'i str: ABC result_expr: $& expected_results ABC +02_n: OK regex: 'abc'i parsed_regex: 'abc'i str: XBC result_expr: - expected_results - +03_n: OK regex: 'abc'i parsed_regex: 'abc'i str: AXC result_expr: - expected_results - +04_n: OK regex: 'abc'i parsed_regex: 'abc'i str: ABX result_expr: - expected_results - +05_y: OK regex: 'abc'i parsed_regex: 'abc'i str: XABCY result_expr: $& expected_results ABC +06_y: OK regex: 'abc'i parsed_regex: 'abc'i str: ABABC result_expr: $& expected_results ABC +07_y: OK regex: 'ab*c'i parsed_regex: 'ab*c'i str: ABC result_expr: $& expected_results ABC +08_y: OK regex: 'ab*bc'i parsed_regex: 'ab*bc'i str: ABC result_expr: $& expected_results ABC +09_y: OK regex: 'ab*bc'i parsed_regex: 'ab*bc'i str: ABBC result_expr: $& expected_results ABBC +10_y: OK regex: 'ab*?bc'i parsed_regex: 'ab*?bc'i str: ABBBBC result_expr: $& expected_results ABBBBC +11_y: OK regex: 'ab{0,}?bc'i parsed_regex: 'ab{0,}?bc'i str: ABBBBC result_expr: $& expected_results ABBBBC +12_y: OK regex: 'ab+?bc'i parsed_regex: 'ab+?bc'i str: ABBC result_expr: $& expected_results ABBC +13_n: OK regex: 'ab+bc'i parsed_regex: 'ab+bc'i str: ABC result_expr: - expected_results - +14_n: OK regex: 'ab+bc'i parsed_regex: 'ab+bc'i str: ABQ result_expr: - expected_results - +15_n: OK regex: 'ab{1,}bc'i parsed_regex: 'ab{1,}bc'i str: ABQ result_expr: - expected_results - +16_y: OK regex: 'ab+bc'i parsed_regex: 'ab+bc'i str: ABBBBC result_expr: $& expected_results ABBBBC +17_y: OK regex: 'ab{1,}?bc'i parsed_regex: 'ab{1,}?bc'i str: ABBBBC result_expr: $& expected_results ABBBBC +18_y: OK regex: 'ab{1,3}?bc'i parsed_regex: 'ab{1,3}?bc'i str: ABBBBC result_expr: $& expected_results ABBBBC +19_y: OK regex: 'ab{3,4}?bc'i parsed_regex: 'ab{3,4}?bc'i str: ABBBBC result_expr: $& expected_results ABBBBC +20_n: OK regex: 'ab{4,5}?bc'i parsed_regex: 'ab{4,5}?bc'i str: ABBBBC result_expr: - expected_results - +21_y: OK regex: 'ab??bc'i parsed_regex: 'ab??bc'i str: ABBC result_expr: $& expected_results ABBC +22_y: OK regex: 'ab??bc'i parsed_regex: 'ab??bc'i str: ABC result_expr: $& expected_results ABC +23_y: OK regex: 'ab{0,1}?bc'i parsed_regex: 'ab{0,1}?bc'i str: ABC result_expr: $& expected_results ABC +24_n: OK regex: 'ab??bc'i parsed_regex: 'ab??bc'i str: ABBBBC result_expr: - expected_results - +25_y: OK regex: 'ab??c'i parsed_regex: 'ab??c'i str: ABC result_expr: $& expected_results ABC +26_y: OK regex: 'ab{0,1}?c'i parsed_regex: 'ab{0,1}?c'i str: ABC result_expr: $& expected_results ABC +27_y: OK regex: '^abc$'i parsed_regex: '^abc$'i str: ABC result_expr: $& expected_results ABC +28_n: OK regex: '^abc$'i parsed_regex: '^abc$'i str: ABCC result_expr: - expected_results - +29_y: OK regex: '^abc'i parsed_regex: '^abc'i str: ABCC result_expr: $& expected_results ABC +30_n: OK regex: '^abc$'i parsed_regex: '^abc$'i str: AABC result_expr: - expected_results - +31_y: OK regex: 'abc$'i parsed_regex: 'abc$'i str: AABC result_expr: $& expected_results ABC +32_y: OK regex: '^'i parsed_regex: '^'i str: ABC result_expr: $& expected_results +33_y: OK regex: '$'i parsed_regex: '$'i str: ABC result_expr: $& expected_results +34_y: OK regex: 'a.c'i parsed_regex: 'a.c'i str: ABC result_expr: $& expected_results ABC +35_y: OK regex: 'a.c'i parsed_regex: 'a.c'i str: AXC result_expr: $& expected_results AXC +36_y: OK regex: 'a\Nc'i parsed_regex: 'a\Nc'i str: ABC result_expr: $& expected_results ABC +37_y: OK regex: 'a.*?c'i parsed_regex: 'a.*?c'i str: AXYZC result_expr: $& expected_results AXYZC +38_n: OK regex: 'a.*c'i parsed_regex: 'a.*c'i str: AXYZD result_expr: - expected_results - +39_n: OK regex: 'a[bc]d'i parsed_regex: 'a[bc]d'i str: ABC result_expr: - expected_results - +40_y: OK regex: 'a[bc]d'i parsed_regex: 'a[bc]d'i str: ABD result_expr: $& expected_results ABD +41_n: OK regex: 'a[b-d]e'i parsed_regex: 'a[b-d]e'i str: ABD result_expr: - expected_results - +42_y: OK regex: 'a[b-d]e'i parsed_regex: 'a[b-d]e'i str: ACE result_expr: $& expected_results ACE +43_y: OK regex: 'a[b-d]'i parsed_regex: 'a[b-d]'i str: AAC result_expr: $& expected_results AC +44_y: OK regex: 'a[-b]'i parsed_regex: 'a[-b]'i str: A- result_expr: $& expected_results A- +45_y: OK regex: 'a[b-]'i parsed_regex: 'a[b-]'i str: A- result_expr: $& expected_results A- +46_y: OK regex: 'a]'i parsed_regex: 'a]'i str: A] result_expr: $& expected_results A] +47_y: OK regex: 'a[]]b'i parsed_regex: 'a[]]b'i str: A]B result_expr: $& expected_results A]B +48_y: OK regex: 'a[^bc]d'i parsed_regex: 'a[^bc]d'i str: AED result_expr: $& expected_results AED +49_n: OK regex: 'a[^bc]d'i parsed_regex: 'a[^bc]d'i str: ABD result_expr: - expected_results - +50_y: OK regex: 'a[^-b]c'i parsed_regex: 'a[^-b]c'i str: ADC result_expr: $& expected_results ADC +51_n: OK regex: 'a[^-b]c'i parsed_regex: 'a[^-b]c'i str: A-C result_expr: - expected_results - +52_n: OK regex: 'a[^]b]c'i parsed_regex: 'a[^]b]c'i str: A]C result_expr: - expected_results - +53_y: OK regex: 'a[^]b]c'i parsed_regex: 'a[^]b]c'i str: ADC result_expr: $& expected_results ADC +54_y: OK regex: 'ab|cd'i parsed_regex: 'ab|cd'i str: ABC result_expr: $& expected_results AB +55_y: OK regex: 'ab|cd'i parsed_regex: 'ab|cd'i str: ABCD result_expr: $& expected_results AB +56_y: OK regex: '()ef'i parsed_regex: '()ef'i str: DEF result_expr: $&-$1 expected_results EF- +57_n: OK regex: '$b'i parsed_regex: '$b'i str: B result_expr: - expected_results - +58_y: OK regex: 'a\(b'i parsed_regex: 'a\(b'i str: A(B result_expr: $&-$1 expected_results A(B- +59_y: OK regex: 'a\(*b'i parsed_regex: 'a\(*b'i str: AB result_expr: $& expected_results AB +60_y: OK regex: 'a\(*b'i parsed_regex: 'a\(*b'i str: A((B result_expr: $& expected_results A((B +61_y: OK regex: 'a\\b'i parsed_regex: 'a\\b'i str: A\B result_expr: $& expected_results A\B +62_y: OK regex: '((a))'i parsed_regex: '((a))'i str: ABC result_expr: $&-$1-$2 expected_results A-A-A +63_y: OK regex: '(a)b(c)'i parsed_regex: '(a)b(c)'i str: ABC result_expr: $&-$1-$2 expected_results ABC-A-C +64_y: OK regex: 'a+b+c'i parsed_regex: 'a+b+c'i str: AABBABC result_expr: $& expected_results ABC +65_y: OK regex: 'a{1,}b{1,}c'i parsed_regex: 'a{1,}b{1,}c'i str: AABBABC result_expr: $& expected_results ABC +66_y: OK regex: 'a.+?c'i parsed_regex: 'a.+?c'i str: ABCABC result_expr: $& expected_results ABC +67_y: OK regex: 'a.*?c'i parsed_regex: 'a.*?c'i str: ABCABC result_expr: $& expected_results ABC +68_y: OK regex: 'a.{0,5}?c'i parsed_regex: 'a.{0,5}?c'i str: ABCABC result_expr: $& expected_results ABC +69_y: OK regex: '(a+|b)*'i parsed_regex: '(a+|b)*'i str: AB result_expr: $&-$1 expected_results AB-B +70_y: OK regex: '(a+|b){0,}'i parsed_regex: '(a+|b){0,}'i str: AB result_expr: $&-$1 expected_results AB-B +71_y: OK regex: '(a+|b)+'i parsed_regex: '(a+|b)+'i str: AB result_expr: $&-$1 expected_results AB-B +72_y: OK regex: '(a+|b){1,}'i parsed_regex: '(a+|b){1,}'i str: AB result_expr: $&-$1 expected_results AB-B +73_y: OK regex: '(a+|b)?'i parsed_regex: '(a+|b)?'i str: AB result_expr: $&-$1 expected_results A-A +74_y: OK regex: '(a+|b){0,1}'i parsed_regex: '(a+|b){0,1}'i str: AB result_expr: $&-$1 expected_results A-A +75_y: OK regex: '(a+|b){0,1}?'i parsed_regex: '(a+|b){0,1}?'i str: AB result_expr: $&-$1 expected_results - +76_y: OK regex: '[^ab]*'i parsed_regex: '[^ab]*'i str: CDE result_expr: $& expected_results CDE +77_n: OK regex: 'abc'i parsed_regex: 'abc'i str: result_expr: - expected_results - +78_y: OK regex: 'a*'i parsed_regex: 'a*'i str: result_expr: $& expected_results +79_y: OK regex: '([abc])*d'i parsed_regex: '([abc])*d'i str: ABBBCD result_expr: $&-$1 expected_results ABBBCD-C +80_y: OK regex: '([abc])*bcd'i parsed_regex: '([abc])*bcd'i str: ABCD result_expr: $&-$1 expected_results ABCD-A +81_y: OK regex: 'a|b|c|d|e'i parsed_regex: 'a|b|c|d|e'i str: E result_expr: $& expected_results E +82_y: OK regex: '(a|b|c|d|e)f'i parsed_regex: '(a|b|c|d|e)f'i str: EF result_expr: $&-$1 expected_results EF-E +83_y: OK regex: 'abcd*efg'i parsed_regex: 'abcd*efg'i str: ABCDEFG result_expr: $& expected_results ABCDEFG +84_y: OK regex: 'ab*'i parsed_regex: 'ab*'i str: XABYABBBZ result_expr: $& expected_results AB +85_y: OK regex: 'ab*'i parsed_regex: 'ab*'i str: XAYABBBZ result_expr: $& expected_results A +86_y: OK regex: '(ab|cd)e'i parsed_regex: '(ab|cd)e'i str: ABCDE result_expr: $&-$1 expected_results CDE-CD +87_y: OK regex: '[abhgefdc]ij'i parsed_regex: '[abhgefdc]ij'i str: HIJ result_expr: $& expected_results HIJ +88_n: OK regex: '^(ab|cd)e'i parsed_regex: '^(ab|cd)e'i str: ABCDE result_expr: x$1y expected_results XY +89_y: OK regex: '(abc|)ef'i parsed_regex: '(abc|)ef'i str: ABCDEF result_expr: $&-$1 expected_results EF- +90_y: OK regex: '(a|b)c*d'i parsed_regex: '(a|b)c*d'i str: ABCD result_expr: $&-$1 expected_results BCD-B +91_y: OK regex: '(ab|ab*)bc'i parsed_regex: '(ab|ab*)bc'i str: ABC result_expr: $&-$1 expected_results ABC-A +92_y: OK regex: 'a([bc]*)c*'i parsed_regex: 'a([bc]*)c*'i str: ABC result_expr: $&-$1 expected_results ABC-BC +93_y: OK regex: 'a([bc]*)(c*d)'i parsed_regex: 'a([bc]*)(c*d)'i str: ABCD result_expr: $&-$1-$2 expected_results ABCD-BC-D +94_y: OK regex: 'a([bc]+)(c*d)'i parsed_regex: 'a([bc]+)(c*d)'i str: ABCD result_expr: $&-$1-$2 expected_results ABCD-BC-D +95_y: OK regex: 'a([bc]*)(c+d)'i parsed_regex: 'a([bc]*)(c+d)'i str: ABCD result_expr: $&-$1-$2 expected_results ABCD-B-CD +96_y: OK regex: 'a[bcd]*dcdcde'i parsed_regex: 'a[bcd]*dcdcde'i str: ADCDCDE result_expr: $& expected_results ADCDCDE +97_n: OK regex: 'a[bcd]+dcdcde'i parsed_regex: 'a[bcd]+dcdcde'i str: ADCDCDE result_expr: - expected_results - +98_y: OK regex: '(ab|a)b*c'i parsed_regex: '(ab|a)b*c'i str: ABC result_expr: $&-$1 expected_results ABC-AB +99_y: OK regex: '((a)(b)c)(d)'i parsed_regex: '((a)(b)c)(d)'i str: ABCD result_expr: $1-$2-$3-$4 expected_results ABC-A-B-D +100_y: OK regex: '[a-zA-Z_][a-zA-Z0-9_]*'i parsed_regex: '[a-zA-Z_][a-zA-Z0-9_]*'i str: ALPHA result_expr: $& expected_results ALPHA +101_y: OK regex: '^a(bc+|b[eh])g|.h$'i parsed_regex: '^a(bc+|b[eh])g|.h$'i str: ABH result_expr: $&-$1 expected_results BH- +102_y: OK regex: '(bc+d$|ef*g.|h?i(j|k))'i parsed_regex: '(bc+d$|ef*g.|h?i(j|k))'i str: EFFGZ result_expr: $&-$1-$2 expected_results EFFGZ-EFFGZ- +103_y: OK regex: '(bc+d$|ef*g.|h?i(j|k))'i parsed_regex: '(bc+d$|ef*g.|h?i(j|k))'i str: IJ result_expr: $&-$1-$2 expected_results IJ-IJ-J +104_n: OK regex: '(bc+d$|ef*g.|h?i(j|k))'i parsed_regex: '(bc+d$|ef*g.|h?i(j|k))'i str: EFFG result_expr: - expected_results - +105_n: OK regex: '(bc+d$|ef*g.|h?i(j|k))'i parsed_regex: '(bc+d$|ef*g.|h?i(j|k))'i str: BCDD result_expr: - expected_results - +106_y: OK regex: '(bc+d$|ef*g.|h?i(j|k))'i parsed_regex: '(bc+d$|ef*g.|h?i(j|k))'i str: REFFGZ result_expr: $&-$1-$2 expected_results EFFGZ-EFFGZ- +107_y: OK regex: '((((((((((a))))))))))'i parsed_regex: '((((((((((a))))))))))'i str: A result_expr: $10 expected_results A +108_y: OK regex: '((((((((((a))))))))))\10'i parsed_regex: '((((((((((a))))))))))\10'i str: AA result_expr: $& expected_results AA +109_y: OK regex: '(((((((((a)))))))))'i parsed_regex: '(((((((((a)))))))))'i str: A result_expr: $& expected_results A +110_n: OK regex: 'multiple words of text'i parsed_regex: 'multiple words of text'i str: UH-UH result_expr: - expected_results - +111_y: OK regex: 'multiple words'i parsed_regex: 'multiple words'i str: MULTIPLE WORDS, YEAH result_expr: $& expected_results MULTIPLE WORDS +112_y: OK regex: '(.*)c(.*)'i parsed_regex: '(.*)c(.*)'i str: ABCDE result_expr: $&-$1-$2 expected_results ABCDE-AB-DE +113_y: OK regex: '\((.*), (.*)\)'i parsed_regex: '\((.*), (.*)\)'i str: (A, B) result_expr: ($2, $1) expected_results (B, A) +114_n: OK regex: '[k]'i parsed_regex: '[k]'i str: AB result_expr: - expected_results - +115_y: OK regex: 'abcd'i parsed_regex: 'abcd'i str: ABCD result_expr: $& expected_results ABCD +116_y: OK regex: 'a(bc)d'i parsed_regex: 'a(bc)d'i str: ABCD result_expr: $1 expected_results BC +117_y: OK regex: 'a[-]?c'i parsed_regex: 'a[-]?c'i str: AC result_expr: $& expected_results AC +118_y: OK regex: '(abc)\1'i parsed_regex: '(abc)\1'i str: ABCABC result_expr: $1 expected_results ABC +119_y: OK regex: '([a-c]*)\1'i parsed_regex: '([a-c]*)\1'i str: ABCABC result_expr: $1 expected_results ABC + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_13_possessive_modifier.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_13_possessive_modifier.cpp.execution new file mode 100644 index 000000000..3eaf91fed --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_13_possessive_modifier.cpp.execution @@ -0,0 +1,50 @@ +Running tests_13_possessive_modifier: +01_n: OK regex: a++a parsed_regex: a++a str: aaaaa result_expr: - expected_results - +02_n: OK regex: a*+a parsed_regex: a*+a str: aaaaa result_expr: - expected_results - +03_n: OK regex: a{1,5}+a parsed_regex: a{1,5}+a str: aaaaa result_expr: - expected_results - +04_n: OK regex: a?+a parsed_regex: a?+a str: ab result_expr: - expected_results - +05_y: OK regex: a++b parsed_regex: a++b str: aaaaab result_expr: $& expected_results aaaaab +06_y: OK regex: a*+b parsed_regex: a*+b str: aaaaab result_expr: $& expected_results aaaaab +07_y: OK regex: a{1,5}+b parsed_regex: a{1,5}+b str: aaaaab result_expr: $& expected_results aaaaab +08_y: OK regex: a?+b parsed_regex: a?+b str: ab result_expr: $& expected_results ab +09_n: OK regex: fooa++a parsed_regex: fooa++a str: fooaaaaa result_expr: - expected_results - +10_n: OK regex: fooa*+a parsed_regex: fooa*+a str: fooaaaaa result_expr: - expected_results - +11_n: OK regex: fooa{1,5}+a parsed_regex: fooa{1,5}+a str: fooaaaaa result_expr: - expected_results - +12_n: OK regex: fooa?+a parsed_regex: fooa?+a str: fooab result_expr: - expected_results - +13_y: OK regex: fooa++b parsed_regex: fooa++b str: fooaaaaab result_expr: $& expected_results fooaaaaab +14_y: OK regex: fooa*+b parsed_regex: fooa*+b str: fooaaaaab result_expr: $& expected_results fooaaaaab +15_y: OK regex: fooa{1,5}+b parsed_regex: fooa{1,5}+b str: fooaaaaab result_expr: $& expected_results fooaaaaab +16_y: OK regex: fooa?+b parsed_regex: fooa?+b str: fooab result_expr: $& expected_results fooab +17_n: OK regex: (aA)++(aA) parsed_regex: (aA)++(aA) str: aAaAaAaAaA result_expr: - expected_results aAaAaAaAaA +18_n: OK regex: (aA|bB)++(aA|bB) parsed_regex: (aA|bB)++(aA|bB) str: aAaAbBaAbB result_expr: - expected_results aAaAbBaAbB +19_n: OK regex: (aA)*+(aA) parsed_regex: (aA)*+(aA) str: aAaAaAaAaA result_expr: - expected_results aAaAaAaAaA +20_n: OK regex: (aA|bB)*+(aA|bB) parsed_regex: (aA|bB)*+(aA|bB) str: aAaAbBaAaA result_expr: - expected_results aAaAbBaAaA +21_n: OK regex: (aA){1,5}+(aA) parsed_regex: (aA){1,5}+(aA) str: aAaAaAaAaA result_expr: - expected_results aAaAaAaAaA +22_n: OK regex: (aA|bB){1,5}+(aA|bB) parsed_regex: (aA|bB){1,5}+(aA|bB) str: aAaAbBaAaA result_expr: - expected_results aAaAbBaAaA +23_n: OK regex: (aA)?+(aA) parsed_regex: (aA)?+(aA) str: aAb result_expr: - expected_results aAb +24_n: OK regex: (aA|bB)?+(aA|bB) parsed_regex: (aA|bB)?+(aA|bB) str: bBb result_expr: - expected_results bBb +25_y: OK regex: (aA)++b parsed_regex: (aA)++b str: aAaAaAaAaAb result_expr: $& expected_results aAaAaAaAaAb +26_y: OK regex: (aA|bB)++b parsed_regex: (aA|bB)++b str: aAbBaAaAbBb result_expr: $& expected_results aAbBaAaAbBb +27_y: OK regex: (aA)*+b parsed_regex: (aA)*+b str: aAaAaAaAaAb result_expr: $& expected_results aAaAaAaAaAb +28_y: OK regex: (aA|bB)*+b parsed_regex: (aA|bB)*+b str: bBbBbBbBbBb result_expr: $& expected_results bBbBbBbBbBb +29_y: OK regex: (aA){1,5}+b parsed_regex: (aA){1,5}+b str: aAaAaAaAaAb result_expr: $& expected_results aAaAaAaAaAb +30_y: OK regex: (aA|bB){1,5}+b parsed_regex: (aA|bB){1,5}+b str: bBaAbBaAbBb result_expr: $& expected_results bBaAbBaAbBb +31_y: OK regex: (aA)?+b parsed_regex: (aA)?+b str: aAb result_expr: $& expected_results aAb +32_y: OK regex: (aA|bB)?+b parsed_regex: (aA|bB)?+b str: bBb result_expr: $& expected_results bBb +33_n: OK regex: foo(aA)++(aA) parsed_regex: foo(aA)++(aA) str: fooaAaAaAaAaA result_expr: - expected_results fooaAaAaAaAaA +34_n: OK regex: foo(aA|bB)++(aA|bB) parsed_regex: foo(aA|bB)++(aA|bB) str: foobBbBbBaAaA result_expr: - expected_results foobBbBbBaAaA +35_n: OK regex: foo(aA)*+(aA) parsed_regex: foo(aA)*+(aA) str: fooaAaAaAaAaA result_expr: - expected_results fooaAaAaAaAaA +36_n: OK regex: foo(aA|bB)*+(aA|bB) parsed_regex: foo(aA|bB)*+(aA|bB) str: foobBaAbBaAaA result_expr: - expected_results foobBaAbBaAaA +37_n: OK regex: foo(aA){1,5}+(aA) parsed_regex: foo(aA){1,5}+(aA) str: fooaAaAaAaAaA result_expr: - expected_results fooaAaAaAaAaA +38_n: OK regex: foo(aA|bB){1,5}+(aA|bB) parsed_regex: foo(aA|bB){1,5}+(aA|bB) str: fooaAbBbBaAaA result_expr: - expected_results fooaAbBbBaAaA +39_n: OK regex: foo(aA)?+(aA) parsed_regex: foo(aA)?+(aA) str: fooaAb result_expr: - expected_results fooaAb +40_n: OK regex: foo(aA|bB)?+(aA|bB) parsed_regex: foo(aA|bB)?+(aA|bB) str: foobBb result_expr: - expected_results foobBb +41_y: OK regex: foo(aA)++b parsed_regex: foo(aA)++b str: fooaAaAaAaAaAb result_expr: $& expected_results fooaAaAaAaAaAb +42_y: OK regex: foo(aA|bB)++b parsed_regex: foo(aA|bB)++b str: foobBaAbBaAbBb result_expr: $& expected_results foobBaAbBaAbBb +43_y: OK regex: foo(aA)*+b parsed_regex: foo(aA)*+b str: fooaAaAaAaAaAb result_expr: $& expected_results fooaAaAaAaAaAb +44_y: OK regex: foo(aA|bB)*+b parsed_regex: foo(aA|bB)*+b str: foobBbBaAaAaAb result_expr: $& expected_results foobBbBaAaAaAb +45_y: OK regex: foo(aA){1,5}+b parsed_regex: foo(aA){1,5}+b str: fooaAaAaAaAaAb result_expr: $& expected_results fooaAaAaAaAaAb +46_y: OK regex: foo(aA|bB){1,5}+b parsed_regex: foo(aA|bB){1,5}+b str: foobBaAaAaAaAb result_expr: $& expected_results foobBaAaAaAaAb +47_y: OK regex: foo(aA)?+b parsed_regex: foo(aA)?+b str: fooaAb result_expr: $& expected_results fooaAb +48_y: OK regex: foo(aA|bB)?+b parsed_regex: foo(aA|bB)?+b str: foobBb result_expr: $& expected_results foobBb + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_14_multiline_modifier.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_14_multiline_modifier.cpp.execution new file mode 100644 index 000000000..f75692392 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_14_multiline_modifier.cpp.execution @@ -0,0 +1,201 @@ +Running tests_14_multiline_modifier: +01_y: OK regex: \Z parsed_regex: \Z str: a\nb\n result_expr: $-[0] expected_results 3 +02_y: OK regex: \z parsed_regex: \z str: a\nb\n result_expr: $-[0] expected_results 4 +03_y: OK regex: $ parsed_regex: $ str: a\nb\n result_expr: $-[0] expected_results 3 +04_y: OK regex: \Z parsed_regex: \Z str: b\na\n result_expr: $-[0] expected_results 3 +05_y: OK regex: \z parsed_regex: \z str: b\na\n result_expr: $-[0] expected_results 4 +06_y: OK regex: $ parsed_regex: $ str: b\na\n result_expr: $-[0] expected_results 3 +07_y: OK regex: \Z parsed_regex: \Z str: b\na result_expr: $-[0] expected_results 3 +08_y: OK regex: \z parsed_regex: \z str: b\na result_expr: $-[0] expected_results 3 +09_y: OK regex: $ parsed_regex: $ str: b\na result_expr: $-[0] expected_results 3 +10_y: OK regex: '\Z'm parsed_regex: '\Z'm str: a\nb\n result_expr: $-[0] expected_results 3 +11_y: OK regex: '\z'm parsed_regex: '\z'm str: a\nb\n result_expr: $-[0] expected_results 4 +12_y: OK regex: '$'m parsed_regex: '$'m str: a\nb\n result_expr: $-[0] expected_results 1 +13_y: OK regex: '\Z'm parsed_regex: '\Z'm str: b\na\n result_expr: $-[0] expected_results 3 +14_y: OK regex: '\z'm parsed_regex: '\z'm str: b\na\n result_expr: $-[0] expected_results 4 +15_y: OK regex: '$'m parsed_regex: '$'m str: b\na\n result_expr: $-[0] expected_results 1 +16_y: OK regex: '\Z'm parsed_regex: '\Z'm str: b\na result_expr: $-[0] expected_results 3 +17_y: OK regex: '\z'm parsed_regex: '\z'm str: b\na result_expr: $-[0] expected_results 3 +18_y: OK regex: '$'m parsed_regex: '$'m str: b\na result_expr: $-[0] expected_results 1 +19_n: OK regex: a\Z parsed_regex: a\Z str: a\nb\n result_expr: - expected_results - +20_n: OK regex: a\z parsed_regex: a\z str: a\nb\n result_expr: - expected_results - +21_n: OK regex: a$ parsed_regex: a$ str: a\nb\n result_expr: - expected_results - +22_y: OK regex: a\Z parsed_regex: a\Z str: b\na\n result_expr: $-[0] expected_results 2 +23_n: OK regex: a\z parsed_regex: a\z str: b\na\n result_expr: - expected_results - +24_y: OK regex: a$ parsed_regex: a$ str: b\na\n result_expr: $-[0] expected_results 2 +25_y: OK regex: a\Z parsed_regex: a\Z str: b\na result_expr: $-[0] expected_results 2 +26_y: OK regex: a\z parsed_regex: a\z str: b\na result_expr: $-[0] expected_results 2 +27_y: OK regex: a$ parsed_regex: a$ str: b\na result_expr: $-[0] expected_results 2 +28_n: OK regex: 'a\Z'm parsed_regex: 'a\Z'm str: a\nb\n result_expr: - expected_results - +29_n: OK regex: 'a\z'm parsed_regex: 'a\z'm str: a\nb\n result_expr: - expected_results - +30_y: OK regex: 'a$'m parsed_regex: 'a$'m str: a\nb\n result_expr: $-[0] expected_results 0 +31_y: OK regex: 'a\Z'm parsed_regex: 'a\Z'm str: b\na\n result_expr: $-[0] expected_results 2 +32_n: OK regex: 'a\z'm parsed_regex: 'a\z'm str: b\na\n result_expr: - expected_results - +33_y: OK regex: 'a$'m parsed_regex: 'a$'m str: b\na\n result_expr: $-[0] expected_results 2 +34_y: OK regex: 'a\Z'm parsed_regex: 'a\Z'm str: b\na result_expr: $-[0] expected_results 2 +35_y: OK regex: 'a\z'm parsed_regex: 'a\z'm str: b\na result_expr: $-[0] expected_results 2 +36_y: OK regex: 'a$'m parsed_regex: 'a$'m str: b\na result_expr: $-[0] expected_results 2 +37_n: OK regex: aa\Z parsed_regex: aa\Z str: aa\nb\n result_expr: - expected_results - +38_n: OK regex: aa\z parsed_regex: aa\z str: aa\nb\n result_expr: - expected_results - +39_n: OK regex: aa$ parsed_regex: aa$ str: aa\nb\n result_expr: - expected_results - +40_y: OK regex: aa\Z parsed_regex: aa\Z str: b\naa\n result_expr: $-[0] expected_results 2 +41_n: OK regex: aa\z parsed_regex: aa\z str: b\naa\n result_expr: - expected_results - +42_y: OK regex: aa$ parsed_regex: aa$ str: b\naa\n result_expr: $-[0] expected_results 2 +43_y: OK regex: aa\Z parsed_regex: aa\Z str: b\naa result_expr: $-[0] expected_results 2 +44_y: OK regex: aa\z parsed_regex: aa\z str: b\naa result_expr: $-[0] expected_results 2 +45_y: OK regex: aa$ parsed_regex: aa$ str: b\naa result_expr: $-[0] expected_results 2 +46_n: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: aa\nb\n result_expr: - expected_results - +47_n: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: aa\nb\n result_expr: - expected_results - +48_y: OK regex: 'aa$'m parsed_regex: 'aa$'m str: aa\nb\n result_expr: $-[0] expected_results 0 +49_y: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: b\naa\n result_expr: $-[0] expected_results 2 +50_n: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: b\naa\n result_expr: - expected_results - +51_y: OK regex: 'aa$'m parsed_regex: 'aa$'m str: b\naa\n result_expr: $-[0] expected_results 2 +52_y: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: b\naa result_expr: $-[0] expected_results 2 +53_y: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: b\naa result_expr: $-[0] expected_results 2 +54_y: OK regex: 'aa$'m parsed_regex: 'aa$'m str: b\naa result_expr: $-[0] expected_results 2 +55_n: OK regex: aa\Z parsed_regex: aa\Z str: ac\nb\n result_expr: - expected_results - +56_n: OK regex: aa\z parsed_regex: aa\z str: ac\nb\n result_expr: - expected_results - +57_n: OK regex: aa$ parsed_regex: aa$ str: ac\nb\n result_expr: - expected_results - +58_n: OK regex: aa\Z parsed_regex: aa\Z str: b\nac\n result_expr: - expected_results - +59_n: OK regex: aa\z parsed_regex: aa\z str: b\nac\n result_expr: - expected_results - +60_n: OK regex: aa$ parsed_regex: aa$ str: b\nac\n result_expr: - expected_results - +61_n: OK regex: aa\Z parsed_regex: aa\Z str: b\nac result_expr: - expected_results - +62_n: OK regex: aa\z parsed_regex: aa\z str: b\nac result_expr: - expected_results - +63_n: OK regex: aa$ parsed_regex: aa$ str: b\nac result_expr: - expected_results - +64_n: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: ac\nb\n result_expr: - expected_results - +65_n: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: ac\nb\n result_expr: - expected_results - +66_n: OK regex: 'aa$'m parsed_regex: 'aa$'m str: ac\nb\n result_expr: - expected_results - +67_n: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: b\nac\n result_expr: - expected_results - +68_n: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: b\nac\n result_expr: - expected_results - +69_n: OK regex: 'aa$'m parsed_regex: 'aa$'m str: b\nac\n result_expr: - expected_results - +70_n: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: b\nac result_expr: - expected_results - +71_n: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: b\nac result_expr: - expected_results - +72_n: OK regex: 'aa$'m parsed_regex: 'aa$'m str: b\nac result_expr: - expected_results - +73_n: OK regex: aa\Z parsed_regex: aa\Z str: ca\nb\n result_expr: - expected_results - +74_n: OK regex: aa\z parsed_regex: aa\z str: ca\nb\n result_expr: - expected_results - +75_n: OK regex: aa$ parsed_regex: aa$ str: ca\nb\n result_expr: - expected_results - +76_n: OK regex: aa\Z parsed_regex: aa\Z str: b\nca\n result_expr: - expected_results - +77_n: OK regex: aa\z parsed_regex: aa\z str: b\nca\n result_expr: - expected_results - +78_n: OK regex: aa$ parsed_regex: aa$ str: b\nca\n result_expr: - expected_results - +79_n: OK regex: aa\Z parsed_regex: aa\Z str: b\nca result_expr: - expected_results - +80_n: OK regex: aa\z parsed_regex: aa\z str: b\nca result_expr: - expected_results - +81_n: OK regex: aa$ parsed_regex: aa$ str: b\nca result_expr: - expected_results - +82_n: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: ca\nb\n result_expr: - expected_results - +83_n: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: ca\nb\n result_expr: - expected_results - +84_n: OK regex: 'aa$'m parsed_regex: 'aa$'m str: ca\nb\n result_expr: - expected_results - +85_n: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: b\nca\n result_expr: - expected_results - +86_n: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: b\nca\n result_expr: - expected_results - +87_n: OK regex: 'aa$'m parsed_regex: 'aa$'m str: b\nca\n result_expr: - expected_results - +88_n: OK regex: 'aa\Z'm parsed_regex: 'aa\Z'm str: b\nca result_expr: - expected_results - +89_n: OK regex: 'aa\z'm parsed_regex: 'aa\z'm str: b\nca result_expr: - expected_results - +90_n: OK regex: 'aa$'m parsed_regex: 'aa$'m str: b\nca result_expr: - expected_results - +91_n: OK regex: ab\Z parsed_regex: ab\Z str: ab\nb\n result_expr: - expected_results - +92_n: OK regex: ab\z parsed_regex: ab\z str: ab\nb\n result_expr: - expected_results - +93_n: OK regex: ab$ parsed_regex: ab$ str: ab\nb\n result_expr: - expected_results - +94_y: OK regex: ab\Z parsed_regex: ab\Z str: b\nab\n result_expr: $-[0] expected_results 2 +95_n: OK regex: ab\z parsed_regex: ab\z str: b\nab\n result_expr: - expected_results - +96_y: OK regex: ab$ parsed_regex: ab$ str: b\nab\n result_expr: $-[0] expected_results 2 +97_y: OK regex: ab\Z parsed_regex: ab\Z str: b\nab result_expr: $-[0] expected_results 2 +98_y: OK regex: ab\z parsed_regex: ab\z str: b\nab result_expr: $-[0] expected_results 2 +99_y: OK regex: ab$ parsed_regex: ab$ str: b\nab result_expr: $-[0] expected_results 2 +100_n: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: ab\nb\n result_expr: - expected_results - +101_n: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: ab\nb\n result_expr: - expected_results - +102_y: OK regex: 'ab$'m parsed_regex: 'ab$'m str: ab\nb\n result_expr: $-[0] expected_results 0 +103_y: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: b\nab\n result_expr: $-[0] expected_results 2 +104_n: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: b\nab\n result_expr: - expected_results - +105_y: OK regex: 'ab$'m parsed_regex: 'ab$'m str: b\nab\n result_expr: $-[0] expected_results 2 +106_y: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: b\nab result_expr: $-[0] expected_results 2 +107_y: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: b\nab result_expr: $-[0] expected_results 2 +108_y: OK regex: 'ab$'m parsed_regex: 'ab$'m str: b\nab result_expr: $-[0] expected_results 2 +109_n: OK regex: ab\Z parsed_regex: ab\Z str: ac\nb\n result_expr: - expected_results - +110_n: OK regex: ab\z parsed_regex: ab\z str: ac\nb\n result_expr: - expected_results - +111_n: OK regex: ab$ parsed_regex: ab$ str: ac\nb\n result_expr: - expected_results - +112_n: OK regex: ab\Z parsed_regex: ab\Z str: b\nac\n result_expr: - expected_results - +113_n: OK regex: ab\z parsed_regex: ab\z str: b\nac\n result_expr: - expected_results - +114_n: OK regex: ab$ parsed_regex: ab$ str: b\nac\n result_expr: - expected_results - +115_n: OK regex: ab\Z parsed_regex: ab\Z str: b\nac result_expr: - expected_results - +116_n: OK regex: ab\z parsed_regex: ab\z str: b\nac result_expr: - expected_results - +117_n: OK regex: ab$ parsed_regex: ab$ str: b\nac result_expr: - expected_results - +118_n: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: ac\nb\n result_expr: - expected_results - +119_n: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: ac\nb\n result_expr: - expected_results - +120_n: OK regex: 'ab$'m parsed_regex: 'ab$'m str: ac\nb\n result_expr: - expected_results - +121_n: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: b\nac\n result_expr: - expected_results - +122_n: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: b\nac\n result_expr: - expected_results - +123_n: OK regex: 'ab$'m parsed_regex: 'ab$'m str: b\nac\n result_expr: - expected_results - +124_n: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: b\nac result_expr: - expected_results - +125_n: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: b\nac result_expr: - expected_results - +126_n: OK regex: 'ab$'m parsed_regex: 'ab$'m str: b\nac result_expr: - expected_results - +127_n: OK regex: ab\Z parsed_regex: ab\Z str: ca\nb\n result_expr: - expected_results - +128_n: OK regex: ab\z parsed_regex: ab\z str: ca\nb\n result_expr: - expected_results - +129_n: OK regex: ab$ parsed_regex: ab$ str: ca\nb\n result_expr: - expected_results - +130_n: OK regex: ab\Z parsed_regex: ab\Z str: b\nca\n result_expr: - expected_results - +131_n: OK regex: ab\z parsed_regex: ab\z str: b\nca\n result_expr: - expected_results - +132_n: OK regex: ab$ parsed_regex: ab$ str: b\nca\n result_expr: - expected_results - +133_n: OK regex: ab\Z parsed_regex: ab\Z str: b\nca result_expr: - expected_results - +134_n: OK regex: ab\z parsed_regex: ab\z str: b\nca result_expr: - expected_results - +135_n: OK regex: ab$ parsed_regex: ab$ str: b\nca result_expr: - expected_results - +136_n: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: ca\nb\n result_expr: - expected_results - +137_n: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: ca\nb\n result_expr: - expected_results - +138_n: OK regex: 'ab$'m parsed_regex: 'ab$'m str: ca\nb\n result_expr: - expected_results - +139_n: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: b\nca\n result_expr: - expected_results - +140_n: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: b\nca\n result_expr: - expected_results - +141_n: OK regex: 'ab$'m parsed_regex: 'ab$'m str: b\nca\n result_expr: - expected_results - +142_n: OK regex: 'ab\Z'm parsed_regex: 'ab\Z'm str: b\nca result_expr: - expected_results - +143_n: OK regex: 'ab\z'm parsed_regex: 'ab\z'm str: b\nca result_expr: - expected_results - +144_n: OK regex: 'ab$'m parsed_regex: 'ab$'m str: b\nca result_expr: - expected_results - +145_n: OK regex: abb\Z parsed_regex: abb\Z str: abb\nb\n result_expr: - expected_results - +146_n: OK regex: abb\z parsed_regex: abb\z str: abb\nb\n result_expr: - expected_results - +147_n: OK regex: abb$ parsed_regex: abb$ str: abb\nb\n result_expr: - expected_results - +148_y: OK regex: abb\Z parsed_regex: abb\Z str: b\nabb\n result_expr: $-[0] expected_results 2 +149_n: OK regex: abb\z parsed_regex: abb\z str: b\nabb\n result_expr: - expected_results - +150_y: OK regex: abb$ parsed_regex: abb$ str: b\nabb\n result_expr: $-[0] expected_results 2 +151_y: OK regex: abb\Z parsed_regex: abb\Z str: b\nabb result_expr: $-[0] expected_results 2 +152_y: OK regex: abb\z parsed_regex: abb\z str: b\nabb result_expr: $-[0] expected_results 2 +153_y: OK regex: abb$ parsed_regex: abb$ str: b\nabb result_expr: $-[0] expected_results 2 +154_n: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: abb\nb\n result_expr: - expected_results - +155_n: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: abb\nb\n result_expr: - expected_results - +156_y: OK regex: 'abb$'m parsed_regex: 'abb$'m str: abb\nb\n result_expr: $-[0] expected_results 0 +157_y: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: b\nabb\n result_expr: $-[0] expected_results 2 +158_n: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: b\nabb\n result_expr: - expected_results - +159_y: OK regex: 'abb$'m parsed_regex: 'abb$'m str: b\nabb\n result_expr: $-[0] expected_results 2 +160_y: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: b\nabb result_expr: $-[0] expected_results 2 +161_y: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: b\nabb result_expr: $-[0] expected_results 2 +162_y: OK regex: 'abb$'m parsed_regex: 'abb$'m str: b\nabb result_expr: $-[0] expected_results 2 +163_n: OK regex: abb\Z parsed_regex: abb\Z str: ac\nb\n result_expr: - expected_results - +164_n: OK regex: abb\z parsed_regex: abb\z str: ac\nb\n result_expr: - expected_results - +165_n: OK regex: abb$ parsed_regex: abb$ str: ac\nb\n result_expr: - expected_results - +166_n: OK regex: abb\Z parsed_regex: abb\Z str: b\nac\n result_expr: - expected_results - +167_n: OK regex: abb\z parsed_regex: abb\z str: b\nac\n result_expr: - expected_results - +168_n: OK regex: abb$ parsed_regex: abb$ str: b\nac\n result_expr: - expected_results - +169_n: OK regex: abb\Z parsed_regex: abb\Z str: b\nac result_expr: - expected_results - +170_n: OK regex: abb\z parsed_regex: abb\z str: b\nac result_expr: - expected_results - +171_n: OK regex: abb$ parsed_regex: abb$ str: b\nac result_expr: - expected_results - +172_n: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: ac\nb\n result_expr: - expected_results - +173_n: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: ac\nb\n result_expr: - expected_results - +174_n: OK regex: 'abb$'m parsed_regex: 'abb$'m str: ac\nb\n result_expr: - expected_results - +175_n: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: b\nac\n result_expr: - expected_results - +176_n: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: b\nac\n result_expr: - expected_results - +177_n: OK regex: 'abb$'m parsed_regex: 'abb$'m str: b\nac\n result_expr: - expected_results - +178_n: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: b\nac result_expr: - expected_results - +179_n: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: b\nac result_expr: - expected_results - +180_n: OK regex: 'abb$'m parsed_regex: 'abb$'m str: b\nac result_expr: - expected_results - +181_n: OK regex: abb\Z parsed_regex: abb\Z str: ca\nb\n result_expr: - expected_results - +182_n: OK regex: abb\z parsed_regex: abb\z str: ca\nb\n result_expr: - expected_results - +183_n: OK regex: abb$ parsed_regex: abb$ str: ca\nb\n result_expr: - expected_results - +184_n: OK regex: abb\Z parsed_regex: abb\Z str: b\nca\n result_expr: - expected_results - +185_n: OK regex: abb\z parsed_regex: abb\z str: b\nca\n result_expr: - expected_results - +186_n: OK regex: abb$ parsed_regex: abb$ str: b\nca\n result_expr: - expected_results - +187_n: OK regex: abb\Z parsed_regex: abb\Z str: b\nca result_expr: - expected_results - +188_n: OK regex: abb\z parsed_regex: abb\z str: b\nca result_expr: - expected_results - +189_n: OK regex: abb$ parsed_regex: abb$ str: b\nca result_expr: - expected_results - +190_n: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: ca\nb\n result_expr: - expected_results - +191_n: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: ca\nb\n result_expr: - expected_results - +192_n: OK regex: 'abb$'m parsed_regex: 'abb$'m str: ca\nb\n result_expr: - expected_results - +193_n: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: b\nca\n result_expr: - expected_results - +194_n: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: b\nca\n result_expr: - expected_results - +195_n: OK regex: 'abb$'m parsed_regex: 'abb$'m str: b\nca\n result_expr: - expected_results - +196_n: OK regex: 'abb\Z'm parsed_regex: 'abb\Z'm str: b\nca result_expr: - expected_results - +197_n: OK regex: 'abb\z'm parsed_regex: 'abb\z'm str: b\nca result_expr: - expected_results - +198_n: OK regex: 'abb$'m parsed_regex: 'abb$'m str: b\nca result_expr: - expected_results - +199_y: OK regex: '\Aa$'m parsed_regex: '\Aa$'m str: a\n\n result_expr: $& expected_results a + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_15_group_modifiers.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_15_group_modifiers.cpp.execution new file mode 100644 index 000000000..825910cc8 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_15_group_modifiers.cpp.execution @@ -0,0 +1,55 @@ +Running tests_15_group_modifiers: +01_y: OK regex: (?:(?i)a)b parsed_regex: (?:(?i)a)b str: ab result_expr: $& expected_results ab +02_y: OK regex: ((?i)a)b parsed_regex: ((?i)a)b str: ab result_expr: $&:$1 expected_results ab:a +03_y: OK regex: (?:(?i)a)b parsed_regex: (?:(?i)a)b str: Ab result_expr: $& expected_results Ab +04_y: OK regex: ((?i)a)b parsed_regex: ((?i)a)b str: Ab result_expr: $&:$1 expected_results Ab:A +05_n: OK regex: (?:(?i)a)b parsed_regex: (?:(?i)a)b str: aB result_expr: - expected_results - +06_n: OK regex: ((?i)a)b parsed_regex: ((?i)a)b str: aB result_expr: - expected_results - +07_y: OK regex: (?i:a)b parsed_regex: (?i:a)b str: ab result_expr: $& expected_results ab +08_y: OK regex: ((?i:a))b parsed_regex: ((?i:a))b str: ab result_expr: $&:$1 expected_results ab:a +09_y: OK regex: (?i:a)b parsed_regex: (?i:a)b str: Ab result_expr: $& expected_results Ab +10_y: OK regex: ((?i:a))b parsed_regex: ((?i:a))b str: Ab result_expr: $&:$1 expected_results Ab:A +11_n: OK regex: (?i:a)b parsed_regex: (?i:a)b str: aB result_expr: - expected_results - +12_n: OK regex: ((?i:a))b parsed_regex: ((?i:a))b str: aB result_expr: - expected_results - +13_y: OK regex: '(?:(?-i)a)b'i parsed_regex: '(?:(?-i)a)b'i str: ab result_expr: $& expected_results ab +14_y: OK regex: '((?-i)a)b'i parsed_regex: '((?-i)a)b'i str: ab result_expr: $&:$1 expected_results ab:a +15_y: OK regex: '(?:(?-i)a)b'i parsed_regex: '(?:(?-i)a)b'i str: aB result_expr: $& expected_results aB +16_y: OK regex: '((?-i)a)b'i parsed_regex: '((?-i)a)b'i str: aB result_expr: $&:$1 expected_results aB:a +17_n: OK regex: '(?:(?-i)a)b'i parsed_regex: '(?:(?-i)a)b'i str: Ab result_expr: - expected_results - +18_n: OK regex: '((?-i)a)b'i parsed_regex: '((?-i)a)b'i str: Ab result_expr: - expected_results - +19_y: OK regex: '(?:(?-i)a)b'i parsed_regex: '(?:(?-i)a)b'i str: aB result_expr: $& expected_results aB +20_y: OK regex: '((?-i)a)b'i parsed_regex: '((?-i)a)b'i str: aB result_expr: $1 expected_results a +21_n: OK regex: '(?:(?-i)a)b'i parsed_regex: '(?:(?-i)a)b'i str: AB result_expr: - expected_results - +22_n: OK regex: '((?-i)a)b'i parsed_regex: '((?-i)a)b'i str: AB result_expr: - expected_results - +23_y: OK regex: '(?-i:a)b'i parsed_regex: '(?-i:a)b'i str: ab result_expr: $& expected_results ab +24_y: OK regex: '((?-i:a))b'i parsed_regex: '((?-i:a))b'i str: ab result_expr: $&:$1 expected_results ab:a +25_y: OK regex: '(?-i:a)b'i parsed_regex: '(?-i:a)b'i str: aB result_expr: $& expected_results aB +26_y: OK regex: '((?-i:a))b'i parsed_regex: '((?-i:a))b'i str: aB result_expr: $&:$1 expected_results aB:a +27_n: OK regex: '(?-i:a)b'i parsed_regex: '(?-i:a)b'i str: Ab result_expr: - expected_results - +28_n: OK regex: '((?-i:a))b'i parsed_regex: '((?-i:a))b'i str: Ab result_expr: - expected_results - +29_y: OK regex: '(?-i:a)b'i parsed_regex: '(?-i:a)b'i str: aB result_expr: $& expected_results aB +30_y: OK regex: '((?-i:a))b'i parsed_regex: '((?-i:a))b'i str: aB result_expr: $1 expected_results a +31_n: OK regex: '(?-i:a)b'i parsed_regex: '(?-i:a)b'i str: AB result_expr: - expected_results - +32_n: OK regex: '((?-i:a))b'i parsed_regex: '((?-i:a))b'i str: AB result_expr: - expected_results - +33_n: OK regex: '((?-i:a.))b'i parsed_regex: '((?-i:a.))b'i str: a\nB result_expr: - expected_results - +34_n: OK regex: '((?-i:a\N))b'i parsed_regex: '((?-i:a\N))b'i str: a\nB result_expr: - expected_results - +35_y: OK regex: '((?s-i:a.))b'i parsed_regex: '((?s-i:a.))b'i str: a\nB result_expr: $1 expected_results a\n +36_n: OK regex: '((?s-i:a\N))b'i parsed_regex: '((?s-i:a\N))b'i str: a\nB result_expr: - expected_results - +37_n: OK regex: '((?s-i:a.))b'i parsed_regex: '((?s-i:a.))b'i str: B\nB result_expr: - expected_results - +38_n: OK regex: '((?s-i:a\N))b'i parsed_regex: '((?s-i:a\N))b'i str: B\nB result_expr: - expected_results - +39_y: OK regex: (?i:.[b].) parsed_regex: (?i:.[b].) str: abd result_expr: $& expected_results abd +40_y: OK regex: (?i:\N[b]\N) parsed_regex: (?i:\N[b]\N) str: abd result_expr: $& expected_results abd +41_n: OK regex: ^(?:a?b?)*$ parsed_regex: ^(?:a?b?)*$ str: a-- result_expr: - expected_results - +42_y: OK regex: ((?s)^a(.))((?m)^b$) parsed_regex: ((?s)^a(.))((?m)^b$) str: a\nb\nc\n result_expr: $1;$2;$3 expected_results a\n;\n;b +43_y: OK regex: ((?m)^b$) parsed_regex: ((?m)^b$) str: a\nb\nc\n result_expr: $1 expected_results b +44_y: OK regex: (?m)^b parsed_regex: (?m)^b str: a\nb\n result_expr: $& expected_results b +45_y: OK regex: (?m)^(b) parsed_regex: (?m)^(b) str: a\nb\n result_expr: $1 expected_results b +46_y: OK regex: ((?m)^b) parsed_regex: ((?m)^b) str: a\nb\n result_expr: $1 expected_results b +47_y: OK regex: \n((?m)^b) parsed_regex: \n((?m)^b) str: a\nb\n result_expr: $1 expected_results b +48_n: OK regex: ^b parsed_regex: ^b str: a\nb\nc\n result_expr: - expected_results - +49_n: OK regex: ()^b parsed_regex: ()^b str: a\nb\nc\n result_expr: - expected_results - +50_y: OK regex: ((?m)^b) parsed_regex: ((?m)^b) str: a\nb\nc\n result_expr: $1 expected_results b +51_y: OK Warning: Parsed regex does not match. regex: '(foo)'n parsed_regex: '(?:foo)'n str: foobar result_expr: $&-$1 expected_results foo- +52_y: OK Warning: Parsed regex does not match. regex: '(?-n)(foo)(?n)(bar)'n parsed_regex: '(?-n)(foo)(?n)(?:bar)'n str: foobar result_expr: $&-$1-$2 expected_results foobar-foo- +53_y: OK Warning: Parsed regex does not match. regex: '(?-n:(foo)(?n:(bar)))'n parsed_regex: '(?-n:(foo)(?n:(?:bar)))'n str: foobar result_expr: $&-$1-$2 expected_results foobar-foo- + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_16_perl_syntax_modifier.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_16_perl_syntax_modifier.cpp.execution new file mode 100644 index 000000000..761720007 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_16_perl_syntax_modifier.cpp.execution @@ -0,0 +1,35 @@ +Running tests_16_perl_syntax_modifier: +01_y: OK Warning: Parsed regex does not match. regex: /\N {1}/x parsed_regex: /\N{1}/x str: abbbbc result_expr: $& expected_results a +02_y: OK Warning: Parsed regex does not match. regex: /\N {1}/x parsed_regex: /\N{1}/x str: abbbbc result_expr: $-[0] expected_results 0 +03_y: OK Warning: Parsed regex does not match. regex: /\N {1}/x parsed_regex: /\N{1}/x str: abbbbc result_expr: $+[0] expected_results 1 +04_y: OK Warning: Parsed regex does not match. regex: /\N {3,4}/x parsed_regex: /\N{3,4}/x str: abbbbc result_expr: $& expected_results abbb +05_y: OK Warning: Parsed regex does not match. regex: /\N {3,4}/x parsed_regex: /\N{3,4}/x str: abbbbc result_expr: $-[0] expected_results 0 +06_y: OK Warning: Parsed regex does not match. regex: /\N {3,4}/x parsed_regex: /\N{3,4}/x str: abbbbc result_expr: $+[0] expected_results 4 +07_y: OK Warning: Parsed regex does not match. regex: /a\N c/x parsed_regex: /a\Nc/x str: abc result_expr: $& expected_results abc +08_y: OK Warning: Parsed regex does not match. regex: /a\N *c/x parsed_regex: /a\N*c/x str: axyzc result_expr: $& expected_results axyzc +09_n: OK Warning: Parsed regex does not match. regex: /a\N *c/x parsed_regex: /a\N*c/x str: axyzd result_expr: - expected_results - +10_yS: OK regex: /[a b]/x parsed_regex: /[a b]/x str: result_expr: $& expected_results +11_n: OK regex: /[a b]/xx parsed_regex: /[a b]/xx str: result_expr: - expected_results - +12_y: OK regex: /[a\ b]/xx parsed_regex: /[a\ b]/xx str: result_expr: $& expected_results +13_n: OK regex: /[ ^ a b ]/xx parsed_regex: /[ ^ a b ]/xx str: a result_expr: - expected_results - +14_n: OK regex: /[ ^ a b ]/xx parsed_regex: /[ ^ a b ]/xx str: b result_expr: - expected_results - +15_y: OK regex: /[ ^ a b ]/xx parsed_regex: /[ ^ a b ]/xx str: A result_expr: $& expected_results A +16_yS: OK regex: /(?x:[a b])/xx parsed_regex: /(?x:[a b])/xx str: result_expr: $& expected_results +17_n: OK regex: /(?xx:[a b])/x parsed_regex: /(?xx:[a b])/x str: result_expr: - expected_results - +18_yS: OK regex: /(?x)[a b]/xx parsed_regex: /(?x)[a b]/xx str: result_expr: $& expected_results +19_n: OK regex: /(?xx)[a b]/x parsed_regex: /(?xx)[a b]/x str: result_expr: - expected_results - +20_yS: OK regex: /(?-x:[a b])/xx parsed_regex: /(?-x:[a b])/xx str: result_expr: $& expected_results +21_y: OK Warning: Parsed regex does not match. regex: /\N {1}/x parsed_regex: /\N{1}/x str: abbbbc result_expr: $& expected_results a +22_y: OK Warning: Parsed regex does not match. regex: /\N {1}/x parsed_regex: /\N{1}/x str: abbbbc result_expr: $-[0] expected_results 0 +23_y: OK Warning: Parsed regex does not match. regex: /\N {1}/x parsed_regex: /\N{1}/x str: abbbbc result_expr: $+[0] expected_results 1 +24_y: OK Warning: Parsed regex does not match. regex: /\N {3,4}/x parsed_regex: /\N{3,4}/x str: abbbbc result_expr: $& expected_results abbb +25_y: OK Warning: Parsed regex does not match. regex: /\N {3,4}/x parsed_regex: /\N{3,4}/x str: abbbbc result_expr: $-[0] expected_results 0 +26_y: OK Warning: Parsed regex does not match. regex: /\N {3,4}/x parsed_regex: /\N{3,4}/x str: abbbbc result_expr: $+[0] expected_results 4 +27_y: OK Warning: Parsed regex does not match. regex: /a\N c/x parsed_regex: /a\Nc/x str: abc result_expr: $& expected_results abc +28_y: OK Warning: Parsed regex does not match. regex: /a\N *c/x parsed_regex: /a\N*c/x str: axyzc result_expr: $& expected_results axyzc +29_n: OK Warning: Parsed regex does not match. regex: /a\N *c/x parsed_regex: /a\N*c/x str: axyzd result_expr: - expected_results - +30_y: OK regex: /[#]/ parsed_regex: /[#]/ str: a#b result_expr: $& expected_results # +31_y: OK regex: /[#]b/ parsed_regex: /[#]b/ str: a#b result_expr: $& expected_results #b +32_y: OK regex: /[#]/x parsed_regex: /[#]/x str: a#b result_expr: $& expected_results # +33_y: OK regex: /[#]b/x parsed_regex: /[#]b/x str: a#b result_expr: $& expected_results #b + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_17_comments.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_17_comments.cpp.execution new file mode 100644 index 000000000..17c9a5d55 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_17_comments.cpp.execution @@ -0,0 +1,5 @@ +Running tests_17_comments: +01_y: OK regex: ^a(?#xxx){3}c parsed_regex: ^a(?#xxx){3}c str: aaac result_expr: $& expected_results aaac +02_y: OK Warning: Parsed regex does not match. regex: '^a (?#xxx) (?#yyy) {3}c'x parsed_regex: '^a(?#xxx)(?#yyy){3}c'x str: aaac result_expr: $& expected_results aaac +03_y: OK Warning: Parsed regex does not match. regex: 'foo # Match foo'x parsed_regex: 'foo'x str: foobar result_expr: $& expected_results foo + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_18_branch_reset.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_18_branch_reset.cpp.execution new file mode 100644 index 000000000..1d088ce31 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_18_branch_reset.cpp.execution @@ -0,0 +1,17 @@ +Running tests_18_branch_reset: +01_y: OK regex: (?|(a)) parsed_regex: (?|(a)) str: a result_expr: $1-$+ expected_results a-a +02_y: OK regex: (?|a(.)b|d(.(o).)d|i(.)(.)j)(.) parsed_regex: (?|a(.)b|d(.(o).)d|i(.)(.)j)(.) str: d!o!da result_expr: $1-$2-$3 expected_results !o!-o-a +03_y: OK regex: (?|a(.)b|d(.(o).)d|i(.)(.)j)(.) parsed_regex: (?|a(.)b|d(.(o).)d|i(.)(.)j)(.) str: aabc result_expr: $1-$2-$3 expected_results a--c +04_y: OK regex: (?|a(.)b|d(.(o).)d|i(.)(.)j)(.) parsed_regex: (?|a(.)b|d(.(o).)d|i(.)(.)j)(.) str: ixyjp result_expr: $1-$2-$3 expected_results x-y-p +05_y: OK regex: (?|(?|(a)|(b))|(?|(c)|(d))) parsed_regex: (?|(?|(a)|(b))|(?|(c)|(d))) str: a result_expr: $1 expected_results a +06_y: OK regex: (?|(?|(a)|(b))|(?|(c)|(d))) parsed_regex: (?|(?|(a)|(b))|(?|(c)|(d))) str: b result_expr: $1 expected_results b +07_y: OK regex: (?|(?|(a)|(b))|(?|(c)|(d))) parsed_regex: (?|(?|(a)|(b))|(?|(c)|(d))) str: c result_expr: $1 expected_results c +08_y: OK regex: (?|(?|(a)|(b))|(?|(c)|(d))) parsed_regex: (?|(?|(a)|(b))|(?|(c)|(d))) str: d result_expr: $1 expected_results d +09_y: OK regex: (.)(?|(.)(.)x|(.)d)(.) parsed_regex: (.)(?|(.)(.)x|(.)d)(.) str: abcde result_expr: $1-$2-$3-$4-$5- expected_results b-c--e-- +10_y: OK regex: (\N)(?|(\N)(\N)x|(\N)d)(\N) parsed_regex: (\N)(?|(\N)(\N)x|(\N)d)(\N) str: abcde result_expr: $1-$2-$3-$4-$5- expected_results b-c--e-- +11_yM: OK regex: (?|(?x)) parsed_regex: (?|(?x)) str: x result_expr: $+{foo} expected_results x +12_yM: OK regex: (?|(?x)|(?y)) parsed_regex: (?|(?x)|(?y)) str: x result_expr: $+{foo} expected_results x +13_yM: OK regex: (?|(?y)|(?x)) parsed_regex: (?|(?y)|(?x)) str: x result_expr: $+{foo} expected_results x +14_yM: OK regex: (?)(?|(?x)) parsed_regex: (?)(?|(?x)) str: x result_expr: $+{foo} expected_results x +15_y: OK regex: (?|(b)|()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(a)) parsed_regex: (?|(b)|()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(a)) str: a result_expr: $& expected_results a + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_19_lookahead.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_19_lookahead.cpp.execution new file mode 100644 index 000000000..0f723eb77 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_19_lookahead.cpp.execution @@ -0,0 +1,57 @@ +Running tests_19_lookahead: +01_y: OK regex: a(?!b). parsed_regex: a(?!b). str: abad result_expr: $& expected_results ad +02_y: OK regex: (?=)a parsed_regex: (?=)a str: a result_expr: $& expected_results a +03_y: OK regex: a(?=d). parsed_regex: a(?=d). str: abad result_expr: $& expected_results ad +04_y: OK regex: a(?=c|d). parsed_regex: a(?=c|d). str: abad result_expr: $& expected_results ad +05_y: OK regex: ^(?:b|a(?=(.)))*\1 parsed_regex: ^(?:b|a(?=(.)))*\1 str: abc result_expr: $& expected_results ab +06_y: OK regex: (?=(a+?))(\1ab) parsed_regex: (?=(a+?))(\1ab) str: aaab result_expr: $2 expected_results aab +07_n: OK regex: ^(?=(a+?))\1ab parsed_regex: ^(?=(a+?))\1ab str: aaab result_expr: - expected_results - +08_y: OK regex: (?=(a+?))(\1ab) parsed_regex: (?=(a+?))(\1ab) str: aaab result_expr: $2 expected_results aab +09_n: OK regex: ^(?=(a+?))\1ab parsed_regex: ^(?=(a+?))\1ab str: aaab result_expr: - expected_results - +10_y: OK regex: (.*)(?=c) parsed_regex: (.*)(?=c) str: abcd result_expr: $1 expected_results ab +11_yB: OK regex: (.*)(?=c)c parsed_regex: (.*)(?=c)c str: abcd result_expr: $1 expected_results ab +12_y: OK regex: (.*)(?=b|c) parsed_regex: (.*)(?=b|c) str: abcd result_expr: $1 expected_results ab +13_y: OK regex: (.*)(?=b|c)c parsed_regex: (.*)(?=b|c)c str: abcd result_expr: $1 expected_results ab +14_y: OK regex: (.*)(?=c|b) parsed_regex: (.*)(?=c|b) str: abcd result_expr: $1 expected_results ab +15_y: OK regex: (.*)(?=c|b)c parsed_regex: (.*)(?=c|b)c str: abcd result_expr: $1 expected_results ab +16_y: OK regex: (.*)(?=[bc]) parsed_regex: (.*)(?=[bc]) str: abcd result_expr: $1 expected_results ab +17_yB: OK regex: (.*)(?=[bc])c parsed_regex: (.*)(?=[bc])c str: abcd result_expr: $1 expected_results ab +18_y: OK regex: (.*?)(?=c) parsed_regex: (.*?)(?=c) str: abcd result_expr: $1 expected_results ab +19_yB: OK regex: (.*?)(?=c)c parsed_regex: (.*?)(?=c)c str: abcd result_expr: $1 expected_results ab +20_y: OK regex: (.*?)(?=b|c) parsed_regex: (.*?)(?=b|c) str: abcd result_expr: $1 expected_results a +21_y: OK regex: (.*?)(?=b|c)c parsed_regex: (.*?)(?=b|c)c str: abcd result_expr: $1 expected_results ab +22_y: OK regex: (.*?)(?=c|b) parsed_regex: (.*?)(?=c|b) str: abcd result_expr: $1 expected_results a +23_y: OK regex: (.*?)(?=c|b)c parsed_regex: (.*?)(?=c|b)c str: abcd result_expr: $1 expected_results ab +24_y: OK regex: (.*?)(?=[bc]) parsed_regex: (.*?)(?=[bc]) str: abcd result_expr: $1 expected_results a +25_yB: OK regex: (.*?)(?=[bc])c parsed_regex: (.*?)(?=[bc])c str: abcd result_expr: $1 expected_results ab +26_y: OK regex: ^(a*?)(?!(aa|aaaa)*$)(?=a\z) parsed_regex: ^(a*?)(?!(aa|aaaa)*$)(?=a\z) str: aaaaaaaa result_expr: $1 expected_results aaaaaaa +27_y: OK regex: a(?!b(?!c))(..) parsed_regex: a(?!b(?!c))(..) str: abababc result_expr: $1 expected_results bc +28_y: OK regex: a(?!b(?=a))(..) parsed_regex: a(?!b(?=a))(..) str: abababc result_expr: $1 expected_results bc +29_y: OK regex: (?=foo) parsed_regex: (?=foo) str: foo result_expr: @+ expected_results 0 +30_y: OK regex: (?=foo) parsed_regex: (?=foo) str: XfooY result_expr: @+ expected_results 1 +31_y: OK regex: .*(?=foo) parsed_regex: .*(?=foo) str: XfooY result_expr: @+ expected_results 1 +32_y: OK regex: (?=.*P)P parsed_regex: (?=.*P)P str: aP result_expr: @+ expected_results 2 +33_y: OK regex: X(?=foo)f parsed_regex: X(?=foo)f str: ..XfooY.. result_expr: @+ expected_results 4 +34_y: OK regex: X(?=foo) parsed_regex: X(?=foo) str: ..XfooY.. result_expr: @+ expected_results 3 +35_y: OK regex: (?=XY*foo) parsed_regex: (?=XY*foo) str: Xfoo result_expr: @+ expected_results 0 +36_y: OK regex: ^(?=XY*foo) parsed_regex: ^(?=XY*foo) str: Xfoo result_expr: @+ expected_results 0 +37_y: OK regex: X(\w+)(?=\s)|X(\w+) parsed_regex: X(\w+)(?=\s)|X(\w+) str: Xab result_expr: [$1-$2] expected_results [-ab] +38_y: OK regex: ^a*(?=b)b parsed_regex: ^a*(?=b)b str: ab result_expr: $& expected_results ab +39_y: OK regex: '(?!\A)x'm parsed_regex: '(?!\A)x'm str: a\nxb\n result_expr: - expected_results - +40_n: OK regex: '^(o)(?!.*\1)'i parsed_regex: '^(o)(?!.*\1)'i str: Oo result_expr: - expected_results - +41_n: OK regex: .*a(?!(b|cd)*e).*f parsed_regex: .*a(?!(b|cd)*e).*f str: ......abef result_expr: - expected_results - +42_y: OK regex: ^(a*?)(?!(aa|aaaa)*$) parsed_regex: ^(a*?)(?!(aa|aaaa)*$) str: aaaaaaaaaaaaaaaaaaaa result_expr: $1 expected_results a +43_y: OK regex: (?!)+?|(.{2,4}) parsed_regex: (?!)+?|(.{2,4}) str: abcde result_expr: $1 expected_results abcd +44_y: OK regex: ^(a*?)(?!(a{6}|a{5})*$) parsed_regex: ^(a*?)(?!(a{6}|a{5})*$) str: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa result_expr: $+[1] expected_results 12 +45_y: OK regex: a(?!b(?!c(?!d(?!e))))...(.) parsed_regex: a(?!b(?!c(?!d(?!e))))...(.) str: abxabcdxabcde result_expr: $1 expected_results e +46_y: OK regex: X(?!b+(?!(c+)*(?!(c+)*d))).*X parsed_regex: X(?!b+(?!(c+)*(?!(c+)*d))).*X str: aXbbbbbbbcccccccccccccaaaX result_expr: - expected_results - +47_y: OK regex: ((?s).)c(?!.) parsed_regex: ((?s).)c(?!.) str: a\nb\nc\n result_expr: $1 expected_results \n +48_y: OK regex: ((?s).)c(?!.) parsed_regex: ((?s).)c(?!.) str: a\nb\nc\n result_expr: $1:$& expected_results \n:\nc +49_y: OK regex: ((?s)b.)c(?!.) parsed_regex: ((?s)b.)c(?!.) str: a\nb\nc\n result_expr: $1 expected_results b\n +50_y: OK regex: ((?s)b.)c(?!.) parsed_regex: ((?s)b.)c(?!.) str: a\nb\nc\n result_expr: $1:$& expected_results b\n:b\nc +51_y: OK regex: ((?s)b.)c(?!\N) parsed_regex: ((?s)b.)c(?!\N) str: a\nb\nc\n result_expr: $1:$& expected_results b\n:b\nc +52_y: OK regex: '(b.)c(?!\N)'s parsed_regex: '(b.)c(?!\N)'s str: a\nb\nc\n result_expr: $1:$& expected_results b\n:b\nc +53_n: OK regex: a*(?!) parsed_regex: a*(?!) str: aaaab result_expr: - expected_results - +54_y: OK regex: (?)foo parsed_regex: (?)foo str: bar>ABCfoo result_expr: $& expected_results foo +55_y: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: $& expected_results ABCfoo + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 000000000..cd61d4f56 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-regex_21_atomic_patterns.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_21_atomic_patterns.cpp.execution new file mode 100644 index 000000000..4812cfbb8 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-regex_21_atomic_patterns.cpp.execution @@ -0,0 +1,8 @@ +Running tests_21_atomic_patterns: +01_y: OK regex: (?>a+)b parsed_regex: (?>a+)b str: aaab result_expr: - expected_results - +02_y: OK regex: ((?>a+)b) parsed_regex: ((?>a+)b) str: aaab result_expr: $1 expected_results aaab +03_y: OK regex: (?>(a+))b parsed_regex: (?>(a+))b str: aaab result_expr: $1 expected_results aaa +04_y: OK regex: ((?>[^()]+)|\([^()]*\))+ parsed_regex: ((?>[^()]+)|\([^()]*\))+ str: ((abc(ade)ufh()()x result_expr: $& expected_results abc(ade)ufh()()x +05_y: OK regex: round\(((?>[^()]+))\) parsed_regex: round\(((?>[^()]+))\) str: _I(round(xs * sz),1) result_expr: $1 expected_results xs * sz +06_y: OK regex: ^((?>(?:aa)?b)?) parsed_regex: ^((?>(?:aa)?b)?) str: aab result_expr: $1 expected_results aab + diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-repeated-call.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-repeated-call.cpp.execution new file mode 100644 index 000000000..d81cc0710 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-repeated-call.cpp.execution @@ -0,0 +1 @@ +42 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-requires-clauses.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-requires-clauses.cpp.execution new file mode 100644 index 000000000..105d7d9ad --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-requires-clauses.cpp.execution @@ -0,0 +1 @@ +100 \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-return-tuple-operator.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-return-tuple-operator.cpp.execution new file mode 100644 index 000000000..a3b7f9a55 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-return-tuple-operator.cpp.execution @@ -0,0 +1,3 @@ +12 , 34 +23 , 45 +34 , 56 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-statement-scope-parameters.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-statement-scope-parameters.cpp.execution new file mode 100644 index 000000000..6fe5c7f6a --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-statement-scope-parameters.cpp.execution @@ -0,0 +1,2 @@ +42 +43 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-synthesize-rightshift-and-rightshifteq.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-synthesize-rightshift-and-rightshifteq.cpp.execution new file mode 100644 index 000000000..b8626c4cf --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-synthesize-rightshift-and-rightshifteq.cpp.execution @@ -0,0 +1 @@ +4 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-template-parameter-lists.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-template-parameter-lists.cpp.execution new file mode 100644 index 000000000..2861a7a20 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-template-parameter-lists.cpp.execution @@ -0,0 +1,4 @@ +f1: 2 +f2: 4 +f3: 6 +f4: 8 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-type-and-namespace-aliases.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-type-and-namespace-aliases.cpp.execution new file mode 100644 index 000000000..9f037f474 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-type-and-namespace-aliases.cpp.execution @@ -0,0 +1,2 @@ +xyzzy +plugh diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-type-constraints.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-type-constraints.cpp.execution new file mode 100644 index 000000000..4ca9382bc --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-type-constraints.cpp.execution @@ -0,0 +1,2 @@ +satisfies std::regular +fallback diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-type-safety-1.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-type-safety-1.cpp.execution new file mode 100644 index 000000000..df9d257d3 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-type-safety-1.cpp.execution @@ -0,0 +1,11 @@ + double is int? false + variant is int? false + any is int? false + optional is int? false + + int is int? true + variant is int? true + any is int? true + optional is int? true +optional is: int +optional<*D> is: *B *D diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-type-safety-2-with-inspect-expression.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-type-safety-2-with-inspect-expression.cpp.execution new file mode 100644 index 000000000..7045a6e79 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-type-safety-2-with-inspect-expression.cpp.execution @@ -0,0 +1,8 @@ + double value is not an int + variant value is not an int + any value is not an int + optional value is not an int + int value is 42 + variant value is 1 + any value is 2 + optional value is 3 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-basics.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-basics.cpp.execution new file mode 100644 index 000000000..96b31fc42 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-basics.cpp.execution @@ -0,0 +1,27 @@ +myclass: implicit from int + data: 1, more: 504 +N::myclass::f with 53 +N::myclass::nested::g +f1: 2 +f2: 4 +f3: 6 +f4: 8 +myclass: explicit from string + data: 99, more: abracadabra +myclass: default + data: 504, more: 3.141590 +myclass: from int and string + data: 77, more: hair1 plugh +x's state before assignments: data: 1, more: 504 +myclass: implicit from int + data: 84, more: 504 +myclass: explicit from string + data: 99, more: syzygy +myclass: implicit from int + data: 84, more: 504 +myclass: explicit from string + data: 99, more: syzygy +myclass: destructor +myclass: destructor +myclass: destructor +myclass: destructor diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-down-upcast.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-down-upcast.cpp.execution new file mode 100644 index 000000000..20751af06 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-down-upcast.cpp.execution @@ -0,0 +1,24 @@ +const foo +const foo +const foo +const foo +foo +foo +Call B const: 0.000000 +Call B const: 0.000000 +Call A const: 0 +Call B const: 0.000000 +Call B const: 0.000000 +Call A const: 0 +Call B mut: 0.000000 +Call B mut: 0.000000 +Call A mut: 0 +Call A const: 0 +Call B const: 0.000000 +Call A const: 0 +Call A const: 0 +Call B const: 0.000000 +Call A const: 0 +Call A mut: 0 +Call B mut: 0.000000 +Call A mut: 0 diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-inheritance.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-inheritance.cpp.execution new file mode 100644 index 000000000..809430aaa --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-inheritance.cpp.execution @@ -0,0 +1,5 @@ +Parsnip checks in for the day's shift +printing: Parsnip lives at 123 Main St. +-> [vcall: make_speak] Parsnip cracks a few jokes with a coworker +-> [vcall: do_work] Parsnip carries some half-tonne crates of Fe2O3 to cold storage +Tired but satisfied after another successful day, Parsnip checks out and goes home to their family diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-order-independence-and-nesting.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-order-independence-and-nesting.cpp.execution new file mode 100644 index 000000000..cc716cc8c --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-order-independence-and-nesting.cpp.execution @@ -0,0 +1,5 @@ +made a safely initialized cycle +leaving call to 'why(5)' +leaving call to 'why(3)' +leaving call to 'why(1)' +hallo welt diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-ordering-via-meta-functions.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-ordering-via-meta-functions.cpp.execution new file mode 100644 index 000000000..54b3aab09 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-ordering-via-meta-functions.cpp.execution @@ -0,0 +1 @@ +less more less diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-1-provide-everything.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-1-provide-everything.cpp.execution new file mode 100644 index 000000000..fc5a23bde --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-1-provide-everything.cpp.execution @@ -0,0 +1,8 @@ +Function invoked Call syntax Results +---------------------- ------------ ------------------------------------------------------ +ctor - from string construct [ Henry | 123 Ford Dr. ] +ctor - from string assign [ Clara | 123 Ford Dr. ] +ctor - copy (GENERAL) cp-construct [ Clara | 123 Ford Dr. ] <- [ Clara | 123 Ford Dr. ] +ctor - move mv-construct [ Clara(CM) | 123 Ford Dr. ] <- [ | ] +assign - copy cp-assign [ Clara | 123 Ford Dr.(AC) ] <- [ Clara | 123 Ford Dr. ] +assign - move mv-assign [ Clara | 123 Ford Dr. ] <- [ | ] diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-2-provide-mvconstruct-and-cpassign.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-2-provide-mvconstruct-and-cpassign.cpp.execution new file mode 100644 index 000000000..7cbf0f869 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-2-provide-mvconstruct-and-cpassign.cpp.execution @@ -0,0 +1,8 @@ +Function invoked Call syntax Results +---------------------- ------------ ------------------------------------------------------ +ctor - from string construct [ Henry | 123 Ford Dr. ] +ctor - from string assign [ Clara | 123 Ford Dr. ] +ctor - copy (GENERAL) cp-construct [ Clara | 123 Ford Dr. ] <- [ Clara | 123 Ford Dr. ] +ctor - move mv-construct [ Clara(CM) | 123 Ford Dr. ] <- [ | ] +assign - copy cp-assign [ Clara | 123 Ford Dr.(AC) ] <- [ Clara | 123 Ford Dr. ] +assign - copy mv-assign [ Clara | 123 Ford Dr.(AC) ] <- [ | ] diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-3-provide-mvconstruct-and-mvassign.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-3-provide-mvconstruct-and-mvassign.cpp.execution new file mode 100644 index 000000000..371e06b05 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-3-provide-mvconstruct-and-mvassign.cpp.execution @@ -0,0 +1,7 @@ +Function invoked Call syntax Results +---------------------- ------------ ------------------------------------------------------ +ctor - from string construct [ Henry | 123 Ford Dr. ] +ctor - from string assign [ Clara | 123 Ford Dr. ] +ctor - copy (GENERAL) cp-construct [ Clara | 123 Ford Dr. ] <- [ Clara | 123 Ford Dr. ] +ctor - move mv-construct [ Clara(CM) | 123 Ford Dr. ] <- [ | ] +assign - move mv-assign [ Clara | 123 Ford Dr. ] <- [ | ] diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-4-provide-cpassign-and-mvassign.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-4-provide-cpassign-and-mvassign.cpp.execution new file mode 100644 index 000000000..24d4e763a --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-4-provide-cpassign-and-mvassign.cpp.execution @@ -0,0 +1,8 @@ +Function invoked Call syntax Results +---------------------- ------------ ------------------------------------------------------ +ctor - from string construct [ Henry | 123 Ford Dr. ] +ctor - from string assign [ Clara | 123 Ford Dr. ] +ctor - copy (GENERAL) cp-construct [ Clara | 123 Ford Dr. ] <- [ Clara | 123 Ford Dr. ] +ctor - copy (GENERAL) mv-construct [ Clara | 123 Ford Dr. ] <- [ | ] +assign - copy cp-assign [ Clara | 123 Ford Dr.(AC) ] <- [ Clara | 123 Ford Dr. ] +assign - move mv-assign [ Clara | 123 Ford Dr. ] <- [ | ] diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-5-provide-nothing-but-general-case.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-5-provide-nothing-but-general-case.cpp.execution new file mode 100644 index 000000000..c387c0371 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-smf-and-that-5-provide-nothing-but-general-case.cpp.execution @@ -0,0 +1,8 @@ +Function invoked Call syntax Results +---------------------- ------------ ------------------------------------------------------ +ctor - from string construct [ Henry | 123 Ford Dr. ] +ctor - from string assign [ Clara | 123 Ford Dr. ] +ctor - copy (GENERAL) cp-construct [ Clara | 123 Ford Dr. ] <- [ Clara | 123 Ford Dr. ] +ctor - copy (GENERAL) mv-construct [ Clara | 123 Ford Dr. ] <- [ | ] +ctor - copy (GENERAL) cp-assign [ Clara | 123 Ford Dr. ] <- [ Clara | 123 Ford Dr. ] +ctor - copy (GENERAL) mv-assign [ Clara | 123 Ford Dr. ] <- [ | ] diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-that-parameters.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-that-parameters.cpp.execution new file mode 100644 index 000000000..abd49e623 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-that-parameters.cpp.execution @@ -0,0 +1,7 @@ +name 'Henry', addr '123 Ford Dr.' +----- +name 'Henry', addr '123 Ford Dr.' +name 'Henry', addr '123 Ford Dr.' +----- +name '', addr '' +name 'Henry', addr '123 Ford Dr.' diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-types-value-types-via-meta-functions.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-types-value-types-via-meta-functions.cpp.execution new file mode 100644 index 000000000..daee7bf51 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-types-value-types-via-meta-functions.cpp.execution @@ -0,0 +1 @@ +less less less \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-union.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-union.cpp.execution new file mode 100644 index 000000000..e52daad8e --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-union.cpp.execution @@ -0,0 +1,4 @@ +sizeof(x) - alignof(x) == max(sizeof(fields)) is true +(not a name) +xyz +42 \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-unsafe.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-unsafe.cpp.execution new file mode 100644 index 000000000..705506a60 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-unsafe.cpp.execution @@ -0,0 +1 @@ +plugh \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/pure2-variadics.cpp.execution b/regression-tests/test-results/gcc-15-c++2b/pure2-variadics.cpp.execution new file mode 100644 index 000000000..53bc692f9 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/pure2-variadics.cpp.execution @@ -0,0 +1,7 @@ +xyz +plu +abr +3.14word-1500 +first all() returned false +second all() returned true +sum of (1, 2, 3, 100) is: 106 \ No newline at end of file diff --git a/regression-tests/test-results/gcc-15-c++2b/run-tests-gcc-15.sh b/regression-tests/test-results/gcc-15-c++2b/run-tests-gcc-15.sh new file mode 100644 index 000000000..ca4bca5bb --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/run-tests-gcc-15.sh @@ -0,0 +1,25 @@ +# This is intended to be run in the /test-results/gcc-15 subdirectory +# in a Linux shell with gcc 15 installed +# +cp ../*.cpp . +rm -f *.output +count=0 +exe_count=0 +g++ --version > gcc-version.output 2>&1 +for f in *.cpp +do + let count=count+1 + printf "[%s] Starting gcc 15 %s\n" "$count" "$f" + g++ -I../../../include -std=c++2b -pthread -Wold-style-cast -Wunused-parameter -o test.exe $f > $f.output 2>&1 + rm -f $f + if test -f "test.exe"; then + let exe_count=exe_count+1 + printf " Starting executable\n" + ./test.exe > $f.execution 2>&1 + rm -f test.exe + fi +done +rm -f *.obj *.exp *.lib +find . -type f -exec bash -c "[ ! -s \"{}\" ] && rm \"{}\"" \; +printf "\nDone: %s .cpp tests compiled\n" "$count" +printf "\n %s .cpp executables generated and run\n" "$exe_count" diff --git a/regression-tests/test-results/gcc-15-c++2b/xyzzy b/regression-tests/test-results/gcc-15-c++2b/xyzzy new file mode 100644 index 000000000..805bcb853 --- /dev/null +++ b/regression-tests/test-results/gcc-15-c++2b/xyzzy @@ -0,0 +1 @@ +Hello Fred with UFCS! \ No newline at end of file