mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
* spelling: different Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: implicit Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: overridden Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: parameter Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: treat Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: unknown Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
219 lines
14 KiB
Swift
219 lines
14 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: touch %/t/main.swift
|
|
// RUN: touch %/t/second.swift
|
|
|
|
// 1. Incremental mode (single primary file)
|
|
//
|
|
// A) Run without an "index-unit-output-path" entry:
|
|
// RUN: echo '{ ' > %/t/outputmap.json
|
|
// RUN: echo ' "%/t/main.swift":{ ' >> %/t/outputmap.json
|
|
// RUN: echo ' "object": "%/t/main_out.o" ' >> %/t/outputmap.json
|
|
// RUN: echo ' }, ' >> %/t/outputmap.json
|
|
// RUN: echo ' "%/t/second.swift":{ ' >> %/t/outputmap.json
|
|
// RUN: echo ' "object": "%/t/second_out.o"' >> %/t/outputmap.json
|
|
// RUN: echo ' } ' >> %/t/outputmap.json
|
|
// RUN: echo '} ' >> %/t/outputmap.json
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -disable-batch-mode -output-file-map %/t/outputmap.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_without \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Check the unit output is based on the "object" field
|
|
// RUN: c-index-test core -print-unit %/t/idx_without | %FileCheck -check-prefixes=INDEX_WITHOUT %s
|
|
//
|
|
// INDEX_WITHOUT: main_out.o-{{.*}}
|
|
// INDEX_WITHOUT-NEXT: --------
|
|
// INDEX_WITHOUT: out-file: {{.*}}main_out.o
|
|
//
|
|
// INDEX_WITHOUT: second_out.o-{{.*}}
|
|
// INDEX_WITHOUT-NEXT: --------
|
|
// INDEX_WITHOUT: out-file: {{.*}}second_out.o
|
|
//
|
|
// B) Run with an "index-unit-output-path" entry different from the "output" entry:
|
|
// RUN: echo '{ ' > %/t/outputmap-custom.json
|
|
// RUN: echo ' "%/t/main.swift":{ ' >> %/t/outputmap-custom.json
|
|
// RUN: echo ' "object": "%/t/main_out.o", ' >> %/t/outputmap-custom.json
|
|
// RUN: echo ' "index-unit-output-path": "%/t/main_custom.o" ' >> %/t/outputmap-custom.json
|
|
// RUN: echo ' }, ' >> %/t/outputmap-custom.json
|
|
// RUN: echo ' "%/t/second.swift":{ ' >> %/t/outputmap-custom.json
|
|
// RUN: echo ' "object": "%/t/second_out.o", ' >> %/t/outputmap-custom.json
|
|
// RUN: echo ' "index-unit-output-path": "%/t/second_custom.o" ' >> %/t/outputmap-custom.json
|
|
// RUN: echo ' } ' >> %/t/outputmap-custom.json
|
|
// RUN: echo '} ' >> %/t/outputmap-custom.json
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -disable-batch-mode -output-file-map %/t/outputmap-custom.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_with \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Run the same command as above again but with different "output" entry
|
|
// RUN: echo '{ ' > %/t/outputmap-different.json
|
|
// RUN: echo ' "%/t/main.swift":{ ' >> %/t/outputmap-different.json
|
|
// RUN: echo ' "object": "%/t/main_different.o", ' >> %/t/outputmap-different.json
|
|
// RUN: echo ' "index-unit-output-path": "%/t/main_custom.o" ' >> %/t/outputmap-different.json
|
|
// RUN: echo ' }, ' >> %/t/outputmap-different.json
|
|
// RUN: echo ' "%/t/second.swift":{ ' >> %/t/outputmap-different.json
|
|
// RUN: echo ' "object": "%/t/second_different.o", ' >> %/t/outputmap-different.json
|
|
// RUN: echo ' "index-unit-output-path": "%/t/second_custom.o" ' >> %/t/outputmap-different.json
|
|
// RUN: echo ' } ' >> %/t/outputmap-different.json
|
|
// RUN: echo '} ' >> %/t/outputmap-different.json
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -disable-batch-mode -output-file-map %/t/outputmap-different.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_with \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Check the unit output is based on -index-unit-output-path:
|
|
// RUN: c-index-test core -print-unit %/t/idx_with | %FileCheck -check-prefixes=INDEX_WITH %s
|
|
//
|
|
// Check no units were produced based on the -o values
|
|
// RUN: c-index-test core -print-unit %/t/idx_with | %FileCheck -check-prefixes=INDEX_WITH_NEGATIVE %s
|
|
//
|
|
// INDEX_WITH: main_custom.o-{{.*}}
|
|
// INDEX_WITH-NEXT: --------
|
|
// INDEX_WITH: out-file: {{.*}}main_custom.o
|
|
//
|
|
// INDEX_WITH: second_custom.o-{{.*}}
|
|
// INDEX_WITH-NEXT: --------
|
|
// INDEX_WITH: out-file: {{.*}}second_custom.o
|
|
//
|
|
// INDEX_WITH_NEGATIVE-NOT: main_out.o
|
|
// INDEX_WITH_NEGATIVE-NOT: main_different.o
|
|
// INDEX_WITH_NEGATIVE-NOT: second_out.o
|
|
// INDEX_WITH_NEGATIVE-NOT: second_different.o
|
|
//
|
|
// Run with a different -index-unit-output-path
|
|
// RUN: echo '{ ' > %/t/outputmap-different2.json
|
|
// RUN: echo ' "%/t/main.swift":{ ' >> %/t/outputmap-different2.json
|
|
// RUN: echo ' "object": "%/t/main_different.o", ' >> %/t/outputmap-different2.json
|
|
// RUN: echo ' "index-unit-output-path": "%/t/xmain_custom.o" ' >> %/t/outputmap-different2.json
|
|
// RUN: echo ' }, ' >> %/t/outputmap-different2.json
|
|
// RUN: echo ' "%/t/second.swift":{ ' >> %/t/outputmap-different2.json
|
|
// RUN: echo ' "object": "%/t/second_different.o", ' >> %/t/outputmap-different2.json
|
|
// RUN: echo ' "index-unit-output-path": "%/t/xsecond_custom.o"' >> %/t/outputmap-different2.json
|
|
// RUN: echo ' } ' >> %/t/outputmap-different2.json
|
|
// RUN: echo '} ' >> %/t/outputmap-different2.json
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -disable-batch-mode -output-file-map %/t/outputmap-different2.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_with \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Check it resulted in a second unit being added to the store
|
|
// RUN: c-index-test core -print-unit %/t/idx_with | %FileCheck -check-prefixes=INDEX_WITH,INDEX_WITH_SECOND %s
|
|
//
|
|
// INDEX_WITH_SECOND: xmain_custom.o-{{.*}}
|
|
// INDEX_WITH_SECOND: --------
|
|
// INDEX_WITH_SECOND: out-file: {{.*}}xmain_custom.o
|
|
//
|
|
// INDEX_WITH_SECOND: xsecond_custom.o-{{.*}}
|
|
// INDEX_WITH_SECOND: --------
|
|
// INDEX_WITH_SECOND: out-file: {{.*}}xsecond_custom.o
|
|
//
|
|
// C) Do the above again but with a fresh index store and using file lists.
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -disable-batch-mode -driver-filelist-threshold=0 \
|
|
// RUN: -output-file-map %/t/outputmap-custom.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_with_list \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -driver-filelist-threshold=0 -output-file-map %/t/outputmap-different.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_with_list \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// RUN: c-index-test core -print-unit %/t/idx_with_list | %FileCheck -check-prefixes=INDEX_WITH %s
|
|
// RUN: c-index-test core -print-unit %/t/idx_with_list | %FileCheck -check-prefixes=INDEX_WITH_NEGATIVE %s
|
|
|
|
|
|
// 2. Batch mode (multiple primary files)
|
|
//
|
|
// A) Run without an "index-unit-output-path" entry:
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -enable-batch-mode -driver-batch-count 1 -output-file-map %/t/outputmap.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_batch_without \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Check the unit output is based on the "output" values
|
|
// RUN: c-index-test core -print-unit %/t/idx_batch_without | %FileCheck -check-prefixes=INDEX_WITHOUT %s
|
|
//
|
|
// B) Run with "index-unit-output-path" values different from the "output" values:
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -enable-batch-mode -driver-batch-count 1 -output-file-map %/t/outputmap-custom.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_batch_with \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Run the same command as above again but with different "output" value
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -enable-batch-mode -driver-batch-count 1 -output-file-map %/t/outputmap-different.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_batch_with \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Check the unit output is based on "index-unit-output-path":
|
|
// RUN: c-index-test core -print-unit %/t/idx_batch_with | %FileCheck -check-prefixes=INDEX_WITH %s
|
|
//
|
|
// Check the unit output is not baed on the "output" values:
|
|
// RUN: c-index-test core -print-unit %/t/idx_batch_with | %FileCheck -check-prefixes=INDEX_WITH_NEGATIVE %s
|
|
//
|
|
// C) Do the above again but with a fresh index store and using file lists.
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -driver-filelist-threshold=0 -enable-batch-mode -driver-batch-count 1 \
|
|
// RUN: -output-file-map %/t/outputmap-custom.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_batch_with_list \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -driver-filelist-threshold=0 -enable-batch-mode -driver-batch-count 1 \
|
|
// RUN: -output-file-map %/t/outputmap-different.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_batch_with_list \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// RUN: c-index-test core -print-unit %/t/idx_batch_with_list | %FileCheck -check-prefixes=INDEX_WITH %s
|
|
// RUN: c-index-test core -print-unit %/t/idx_batch_with_list | %FileCheck -check-prefixes=INDEX_WITH_NEGATIVE %s
|
|
|
|
|
|
// 3. Multi-threaded WMO
|
|
//
|
|
// A) Run without an "index-unit-output-path" entry:
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -whole-module-optimization -num-threads 2 -output-file-map %/t/outputmap.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_wmo_without \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Check the unit output is based on the "output" entry
|
|
// RUN: c-index-test core -print-unit %/t/idx_wmo_without | %FileCheck -check-prefixes=INDEX_WITHOUT %s
|
|
//
|
|
// B) Run with an "index-unit-output-path" entry different from the "output" value
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -whole-module-optimization -num-threads 2 -output-file-map %/t/outputmap-custom.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_wmo_with \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Run the same command as above again but with different "output" values
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -whole-module-optimization -num-threads 2 -output-file-map %/t/outputmap-different.json \
|
|
// RUN: -module-name mod_name -index-store-path %/t/idx_wmo_with \
|
|
// RUN: %/t/main.swift %/t/second.swift
|
|
//
|
|
// Check the unit output is based on "index-unit-output-path" entry
|
|
// RUN: c-index-test core -print-unit %/t/idx_wmo_with | %FileCheck -check-prefixes=INDEX_WITH %s
|
|
// Check no units were produced based on the "output" values:
|
|
// RUN: c-index-test core -print-unit %/t/idx_wmo_with | %FileCheck -check-prefixes=INDEX_WITH_NEGATIVE %s
|
|
|
|
|
|
// 4. Index file
|
|
//
|
|
// A) Run without -index-unit-output-path
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -module-name mod_name -index-store-path %/t/idx_index_without \
|
|
// RUN: %/t/main.swift %/t/second.swift -index-file -index-file-path %/t/main.swift \
|
|
// RUN: -o %/t/main_out.o
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -module-name mod_name -index-store-path %/t/idx_index_without \
|
|
// RUN: %/t/main.swift %/t/second.swift -index-file -index-file-path %/t/second.swift \
|
|
// RUN: -o %/t/second_out.o
|
|
//
|
|
// Check that the unit output is based on -o
|
|
// RUN: c-index-test core -print-unit %/t/idx_index_without | %FileCheck -check-prefixes=INDEX_WITHOUT %s
|
|
//
|
|
// B) Run with -index-unit-output-path
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -module-name mod_name -index-store-path %/t/idx_index_with \
|
|
// RUN: %/t/main.swift %/t/second.swift -index-file -index-file-path %/t/main.swift \
|
|
// RUN: -o %/t/main_out.o -index-unit-output-path %/t/main_custom.o
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -module-name mod_name -index-store-path %/t/idx_index_with \
|
|
// RUN: %/t/main.swift %/t/second.swift -index-file -index-file-path %/t/second.swift \
|
|
// RUN: -o %/t/second_out.o -index-unit-output-path %/t/second_custom.o
|
|
//
|
|
// Run the same commands as above again but with different -o value
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -module-name mod_name -index-store-path %/t/idx_index_with \
|
|
// RUN: %/t/main.swift %/t/second.swift -index-file -index-file-path %/t/main.swift \
|
|
// RUN: -o %/t/main_different.o -index-unit-output-path %/t/main_custom.o
|
|
// RUN: %target-swiftc_driver -Xfrontend -index-ignore-stdlib -module-name mod_name -index-store-path %/t/idx_index_with \
|
|
// RUN: %/t/main.swift %/t/second.swift -index-file -index-file-path %/t/second.swift \
|
|
// RUN: -o %/t/second_different.o -index-unit-output-path %/t/second_custom.o
|
|
//
|
|
// Check that the unit output is based on -index-unit-output-path
|
|
// RUN: c-index-test core -print-unit %/t/idx_index_with | %FileCheck -check-prefixes=INDEX_WITH %s
|
|
//
|
|
// Check that the unit output is not based on -o
|
|
// RUN: c-index-test core -print-unit %/t/idx_index_with | %FileCheck -check-prefixes=INDEX_WITH_NEGATIVE %s
|