mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Turn pretty-printing of a declaration into a request
The diagnostics engine has some code to pretty-print a declaration when there is no source location for that declaration. The declaration is pretty-printed into a source buffer, and a source location into that buffer is synthesizes. This applies to synthesized declarations as well as those imported from Swift modules (without source code) or from Clang. Reimplement this pretty-printing for declarations as a request. In doing so, change the manner in which we do the printing: the diagnostics engine printed the entire enclosing type into a buffer whose name was the module + that type. This meant that the buffer was shared by every member of that type, but also meant that we would end up deserializing a lot of declarations just for printing and potentially doing a lot more work for these diagnostics.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
var x = String.init // expected-error{{ambiguous use of 'init'}}
|
||||
// CHECK: {{.*[/\\]}}serialized-diagnostics-prettyprint.swift:[[@LINE-1]]:16: error: ambiguous use of 'init'
|
||||
|
||||
// CHECK: Swift.String:2:23: note: found this candidate
|
||||
// CHECK: CONTENTS OF FILE Swift.String:
|
||||
// CHECK: extension String {
|
||||
// CHECK: Swift.String.init:2:19: note: found this candidate
|
||||
// CHECK: CONTENTS OF FILE Swift.String.init:
|
||||
// CHECK: struct String {
|
||||
// CHECK: public init(_ content: Substring.UnicodeScalarView)
|
||||
|
||||
Reference in New Issue
Block a user