Files
swift-mirror/test/IDE/print_clang_framework.swift
Rintaro Ishizaki c9785d955d [SourceKit] Stop printing normal comments in clang generated interface
Generated interfaces for Clang modules used to try printing normal
comments between decls extracted from the header text. That was because
doc-comment was not common in C/ObjC headers. But mainly because of
"import as member feature" Clang decls aren't printed in the order as
they appear in the header file, the logic determinig which comment
belongs to which decl was not working property. We've decided to remove
that feature and only print the proper doc-comments as it has been
getting common.

rdar://93731287
2024-03-21 11:52:32 +09:00

152 lines
9.9 KiB
Swift

// TODO: Properties with unowned or weak ownership should not be bridged.
// XFAIL: *
// RUN: %empty-directory(%t)
// RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-module -source-filename %s -module-to-print=Foo -function-definitions=false > %t/Foo.printed.txt
// RUN: diff -u %S/Inputs/mock-sdk/Foo.printed.txt %t/Foo.printed.txt
// RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-interface -print-module -source-filename %s -module-to-print=Foo -function-definitions=false > %t/Foo.interface.printed.txt
// RUN: %FileCheck %s -check-prefix=INTERFACE1 < %t/Foo.interface.printed.txt
// RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-module -source-filename %s -module-to-print=Foo -function-definitions=false -prefer-type-repr=true -module-print-submodules > %t/Foo.printed.recursive.txt
// RUN: diff -u %S/Inputs/mock-sdk/Foo.printed.recursive.txt %t/Foo.printed.recursive.txt
// RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-module -source-filename %s -module-to-print=Foo.FooSub -function-definitions=false -prefer-type-repr=true > %t/Foo.FooSub.printed.txt
// RUN: diff -u %S/Inputs/mock-sdk/Foo.FooSub.printed.txt %t/Foo.FooSub.printed.txt
// RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-module -source-filename %s -module-to-print=FooHelper -function-definitions=false -prefer-type-repr=true > %t/FooHelper.printed.txt
// RUN: diff -u %S/Inputs/mock-sdk/FooHelper.printed.txt %t/FooHelper.printed.txt
// RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-module -source-filename %s -module-to-print=FooHelper.FooHelperSub -function-definitions=false -prefer-type-repr=true > %t/FooHelper.FooHelperSub.printed.txt
// RUN: diff -u %S/Inputs/mock-sdk/FooHelper.FooHelperSub.printed.txt %t/FooHelper.FooHelperSub.printed.txt
// RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-module -source-filename %s -module-to-print=FooHelper.FooHelperExplicit -function-definitions=false -prefer-type-repr=true > %t/FooHelper.FooHelperExplicit.printed.txt
// RUN: diff -u %S/Inputs/mock-sdk/FooHelper.FooHelperExplicit.printed.txt %t/FooHelper.FooHelperExplicit.printed.txt
// RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-module -source-filename %s -module-to-print=Foo -function-definitions=false -prefer-type-repr=true -annotate-print > %t/Foo.annotated.txt
// RUN: diff -u %S/Inputs/mock-sdk/Foo.annotated.txt %t/Foo.annotated.txt
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/Foundation.swift
// RUN: %target-swift-ide-test(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -print-module -source-filename %s -module-to-print=Foundation -function-definitions=false -prefer-type-repr=true > %t.printed.txt
// RUN: %FileCheck %s -check-prefix=FOUNDATION -strict-whitespace < %t.printed.txt
// This test is in general platform-independent, but it happens to check
// printing of @available attributes for OS X, and those are not printed on
// iOS.
//
// FIXME: split OS X parts into a separate test.
//
// REQUIRES: OS=macosx
// FOUNDATION-LABEL: {{^}}/// Aaa. NSAvailableOnOSX10_51AndIOS8_0. Bbb.
// FOUNDATION-NEXT: {{^}}@available(OSX 10.51, *){{$}}
// FOUNDATION-LABEL: {{^}}/// Aaa. NSPotentiallyUnavailableOptions. Bbb.
// FOUNDATION-NEXT: {{^}}@available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}}struct PotentiallyUnavailableOptions : OptionSet {{{$}}
// FOUNDATION-LABEL: {{^}}/// Aaa. NSOptionsWithUnavailableElement. Bbb.
// FOUNDATION-NEXT: {{^}}struct OptionsWithUnavailableElement : OptionSet {{{$}}
// FOUNDATION-NEXT: {{^}} init(rawValue: UInt){{$}}
// FOUNDATION-NEXT: {{^}} let rawValue: UInt{{$}}
// FOUNDATION-NEXT: {{^}} static var first: OptionsWithUnavailableElement { get }{{$}}
// FOUNDATION-NEXT: {{^}} static var second: OptionsWithUnavailableElement { get }{{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} static var third: OptionsWithUnavailableElement { get }{{$}}
// FOUNDATION-LABEL: {{^}}/// Aaa. NSUnavailableEnum. Bbb.
// FOUNDATION-NEXT: {{^}}@available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}}enum UnavailableEnum : UInt {{{$}}
// FOUNDATION-LABEL: {{^}}/// Aaa. NSEnumWithUnavailableElement. Bbb.
// FOUNDATION-NEXT: {{^}}enum EnumWithUnavailableElement : UInt {{{$}}
// FOUNDATION-NEXT: {{^}} init?(rawValue: UInt){{$}}
// FOUNDATION-NEXT: {{^}} var rawValue: UInt { get }{{$}}
// FOUNDATION-NEXT: {{^}} case first{{$}}
// FOUNDATION-NEXT: {{^}} case second{{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} case third{{$}}
// FOUNDATION-LABEL: {{^}}/// Aaa. UnannotatedFrameworkProtocol. Bbb.
// FOUNDATION-NEXT: {{^}}protocol UnannotatedFrameworkProtocol {{{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(with k: AnnotatedFrameworkClass?){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(withNonNullableClass k: AnnotatedFrameworkClass){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(withIUOClass k: AnnotatedFrameworkClass!){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} func returnSomething() -> AnnotatedFrameworkClass?{{$}}
// FOUNDATION-NEXT: {{^}} func noUnavailableTypesInSignature(){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(with k: AnnotatedFrameworkClass, andLaterClass lk: AnnotatedLaterFrameworkClass){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.53, *)
// FOUNDATION-NEXT: {{^}} func someMethodWithAvailability()
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} var someProperty: AnnotatedFrameworkClass { get set }{{$}}
// FOUNDATION-LABEL: {{^}}/// Aaa. AnnotatedFrameworkProtocol. Bbb.
// FOUNDATION-NEXT: {{^}}@available(OSX 10.9, *){{$}}
// FOUNDATION-NEXT: {{^}}protocol AnnotatedFrameworkProtocol {{{$}}
// FOUNDATION-NEXT: {{^}} func returnSomething() -> AnnotatedFrameworkClass?{{$}}
// FOUNDATION-LABEL: /// Aaa. FrameworkClassConformingToUnannotatedFrameworkProtocol. Bbb.
// FOUNDATION-NEXT: {{^}}class FrameworkClassConformingToUnannotatedFrameworkProtocol : NSObject, UnannotatedFrameworkProtocol {{{$}}
// FOUNDATION-NEXT: {{^}} init(){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(with k: AnnotatedFrameworkClass?){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(withNonNullableClass k: AnnotatedFrameworkClass){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(withIUOClass k: AnnotatedFrameworkClass!){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} func returnSomething() -> AnnotatedFrameworkClass?{{$}}
// FOUNDATION-NEXT: {{^}} func noUnavailableTypesInSignature(){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(with k: AnnotatedFrameworkClass, andLaterClass lk: AnnotatedLaterFrameworkClass){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.53, *)
// FOUNDATION-NEXT: {{^}} func someMethodWithAvailability()
// FOUNDATION-NEXT: {{^}} @available(OSX 10.51, *){{$}}
// FOUNDATION-NEXT: {{^}} var someProperty: AnnotatedFrameworkClass{{$}}
// FOUNDATION-LABEL: /// Aaa. LaterFrameworkClassConformingToUnannotatedFrameworkProtocol. Bbb.
// FOUNDATION-NEXT: {{^}}@available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}}class LaterFrameworkClassConformingToUnannotatedFrameworkProtocol : NSObject, UnannotatedFrameworkProtocol {{{$}}
// FOUNDATION-NEXT: {{^}} init(){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(with k: AnnotatedFrameworkClass?){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(withNonNullableClass k: AnnotatedFrameworkClass){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(withIUOClass k: AnnotatedFrameworkClass!){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} func returnSomething() -> AnnotatedFrameworkClass?{{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} func noUnavailableTypesInSignature(){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} func doSomething(with k: AnnotatedFrameworkClass, andLaterClass lk: AnnotatedLaterFrameworkClass){{$}}
// FOUNDATION-NEXT: {{^}} @available(OSX 10.53, *)
// FOUNDATION-NEXT: {{^}} func someMethodWithAvailability()
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *){{$}}
// FOUNDATION-NEXT: {{^}} var someProperty: AnnotatedFrameworkClass{{$}}
}
// FOUNDATION-LABEL: /// Aaa. FrameworkClassConformingToLaterAnnotatedFrameworkProtocol. Bbb.
// FOUNDATION-NEXT: {{^}}class FrameworkClassConformingToLaterAnnotatedFrameworkProtocol : NSObject, LaterAnnotatedFrameworkProtocol {
// FOUNDATION-NEXT: {{^}} init()
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *)
// FOUNDATION-NEXT: {{^}} func returnSomething() -> AnnotatedFrameworkClass?
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *)
// FOUNDATION-NEXT: {{^}} func doSomething(with k: AnnotatedFrameworkClass, andLaterClass lk: AnnotatedLaterFrameworkClass)
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *)
// FOUNDATION-NEXT: {{^}} func noUnavailableTypesInSignature()
// FOUNDATION-NEXT: {{^}} @available(OSX 10.53, *)
// FOUNDATION-NEXT: {{^}} func someMethodWithAvailability()
// FOUNDATION-NEXT: {{^}} @available(OSX 10.52, *)
// FOUNDATION-NEXT: {{^}} var someProperty: AnnotatedFrameworkClass
}
// INTERFACE1-NOT: unavailable
// INTERFACE1-NOT: This comment should not show without decl.