mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[interface-gen] Support passing Swift compiler arguments for header file interface generation
Resolves rdar://problem/33249361.
This commit is contained in:
@@ -32,6 +32,9 @@ def line : Separate<["-"], "line">,
|
||||
HelpText<"line">;
|
||||
def line_EQ : Joined<["-"], "line=">, Alias<line>;
|
||||
|
||||
def are_swift_args : Flag<["-"], "are-swift-args">,
|
||||
HelpText<"Interpret the compiler arguments as Swift compiler arguments">;
|
||||
|
||||
def replace : Separate<["-"], "replace">,
|
||||
HelpText<"replace text ('text')">;
|
||||
def replace_EQ : Joined<["-"], "replace=">, Alias<replace>;
|
||||
|
||||
@@ -179,6 +179,11 @@ bool TestOptions::parseArgs(llvm::ArrayRef<const char *> Args) {
|
||||
break;
|
||||
}
|
||||
|
||||
case OPT_are_swift_args: {
|
||||
AreSwiftArgs = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case OPT_swift_version: {
|
||||
unsigned ver;
|
||||
if (StringRef(InputArg->getValue()).getAsInteger(10, ver)) {
|
||||
|
||||
@@ -77,6 +77,7 @@ struct TestOptions {
|
||||
std::string CachePath;
|
||||
llvm::SmallVector<std::string, 4> RequestOptions;
|
||||
llvm::ArrayRef<const char *> CompilerArgs;
|
||||
bool AreSwiftArgs;
|
||||
std::string USR;
|
||||
std::string SwiftName;
|
||||
std::string ObjCName;
|
||||
|
||||
@@ -580,6 +580,8 @@ static int handleTestInvocation(ArrayRef<const char *> Args,
|
||||
sourcekitd_request_dictionary_set_uid(Req, KeyRequest,
|
||||
RequestEditorOpenSwiftSourceInterface);
|
||||
} else {
|
||||
if (Opts.AreSwiftArgs)
|
||||
sourcekitd_request_dictionary_set_int64(Req, KeyAreSwiftArgs, true);
|
||||
sourcekitd_request_dictionary_set_uid(Req, KeyRequest,
|
||||
RequestEditorOpenHeaderInterface);
|
||||
}
|
||||
|
||||
@@ -163,6 +163,7 @@ editorOpenInterface(StringRef Name, StringRef ModuleName,
|
||||
static sourcekitd_response_t
|
||||
editorOpenHeaderInterface(StringRef Name, StringRef HeaderName,
|
||||
ArrayRef<const char *> Args,
|
||||
bool AreSwiftArgs,
|
||||
bool SynthesizedExtensions,
|
||||
Optional<unsigned> swiftVersion);
|
||||
|
||||
@@ -463,11 +464,13 @@ void handleRequestImpl(sourcekitd_object_t ReqObj, ResponseReceiver Rec) {
|
||||
int64_t SynthesizedExtension = false;
|
||||
Req.getInt64(KeySynthesizedExtension, SynthesizedExtension,
|
||||
/*isOptional=*/true);
|
||||
Optional<int64_t> AreSwiftArgs = Req.getOptionalInt64(KeyAreSwiftArgs);
|
||||
Optional<int64_t> swiftVerVal = Req.getOptionalInt64(KeySwiftVersion);
|
||||
Optional<unsigned> swiftVer;
|
||||
if (swiftVerVal.hasValue())
|
||||
swiftVer = *swiftVerVal;
|
||||
return Rec(editorOpenHeaderInterface(*Name, *HeaderName, Args,
|
||||
AreSwiftArgs.getValueOr(false),
|
||||
SynthesizedExtension, swiftVer));
|
||||
}
|
||||
|
||||
@@ -1999,6 +2002,7 @@ static sourcekitd_response_t editorConvertMarkupToXML(StringRef Source) {
|
||||
static sourcekitd_response_t
|
||||
editorOpenHeaderInterface(StringRef Name, StringRef HeaderName,
|
||||
ArrayRef<const char *> Args,
|
||||
bool AreSwiftArgs,
|
||||
bool SynthesizedExtensions,
|
||||
Optional<unsigned> swiftVersion) {
|
||||
SKEditorConsumer EditC(/*EnableSyntaxMap=*/true,
|
||||
@@ -2006,7 +2010,7 @@ editorOpenHeaderInterface(StringRef Name, StringRef HeaderName,
|
||||
/*EnableDiagnostics=*/false,
|
||||
/*SyntacticOnly=*/false);
|
||||
LangSupport &Lang = getGlobalContext().getSwiftLangSupport();
|
||||
Lang.editorOpenHeaderInterface(EditC, Name, HeaderName, Args,
|
||||
Lang.editorOpenHeaderInterface(EditC, Name, HeaderName, Args, AreSwiftArgs,
|
||||
SynthesizedExtensions, swiftVersion);
|
||||
return EditC.createResponse();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user