@@ -834,11 +834,24 @@ static int handleTestInvocation(TestOptions Opts, TestOptions &InitOpts) {
834
834
break ;
835
835
836
836
case SourceKitRequest::ExpandPlaceholder:
837
- sourcekitd_request_dictionary_set_uid (Req, KeyRequest, RequestEditorOpen);
838
- sourcekitd_request_dictionary_set_string (Req, KeyName, SemaName.c_str ());
839
- sourcekitd_request_dictionary_set_int64 (Req, KeyEnableSyntaxMap, false );
840
- sourcekitd_request_dictionary_set_int64 (Req, KeyEnableStructure, false );
841
- sourcekitd_request_dictionary_set_int64 (Req, KeySyntacticOnly, !Opts.UsedSema );
837
+ if (Opts.Length ) {
838
+ // Single placeholder by location.
839
+ sourcekitd_request_dictionary_set_uid (Req, KeyRequest, RequestEditorExpandPlaceholder);
840
+ sourcekitd_request_dictionary_set_string (Req, KeyName, SemaName.c_str ());
841
+ sourcekitd_request_dictionary_set_int64 (Req, KeyOffset, ByteOffset);
842
+ sourcekitd_request_dictionary_set_int64 (Req, KeyLength, Opts.Length );
843
+ } else {
844
+ if (ByteOffset) {
845
+ llvm::errs () << " Missing '-length <number>'\n " ;
846
+ return 1 ;
847
+ }
848
+ // Expand all placeholders.
849
+ sourcekitd_request_dictionary_set_uid (Req, KeyRequest, RequestEditorOpen);
850
+ sourcekitd_request_dictionary_set_string (Req, KeyName, SemaName.c_str ());
851
+ sourcekitd_request_dictionary_set_int64 (Req, KeyEnableSyntaxMap, false );
852
+ sourcekitd_request_dictionary_set_int64 (Req, KeyEnableStructure, false );
853
+ sourcekitd_request_dictionary_set_int64 (Req, KeySyntacticOnly, !Opts.UsedSema );
854
+ }
842
855
break ;
843
856
844
857
case SourceKitRequest::SyntaxTree:
@@ -1341,7 +1354,13 @@ static bool handleResponse(sourcekitd_response_t Resp, const TestOptions &Opts,
1341
1354
break ;
1342
1355
1343
1356
case SourceKitRequest::ExpandPlaceholder:
1344
- expandPlaceholders (SourceBuf.get (), llvm::outs ());
1357
+ if (Opts.Length ) {
1358
+ // Single placeholder by location.
1359
+ sourcekitd_response_description_dump_filedesc (Resp, STDOUT_FILENO);
1360
+ } else {
1361
+ // Expand all placeholders.
1362
+ expandPlaceholders (SourceBuf.get (), llvm::outs ());
1363
+ }
1345
1364
break ;
1346
1365
case SourceKitRequest::ModuleGroups:
1347
1366
printModuleGroupNames (Info, llvm::outs ());
0 commit comments