@@ -189,6 +189,33 @@ func Test_Lint(t *testing.T) {
189189 )
190190 })
191191
192+ t .Run ("generates synthetic replacement for replacement category diagnostics" , func (t * testing.T ) {
193+ t .Parallel ()
194+
195+ state := setupMockState (t )
196+
197+ results , err := lintFiles (state , "ReplacementHint.cdc" )
198+ require .NoError (t , err )
199+
200+ require .Len (t , results .Results , 1 )
201+ require .Len (t , results .Results [0 ].Diagnostics , 1 )
202+
203+ diagnostic := results .Results [0 ].Diagnostics [0 ]
204+
205+ // Should have the replacement category
206+ require .Equal (t , "replacement-hint" , diagnostic .Category )
207+
208+ // Should have a secondary message with the replacement suggestion
209+ require .Equal (t , "consider replacing with:" , diagnostic .Message )
210+ require .Equal (t , "1.0" , diagnostic .SecondaryMessage )
211+
212+ // Should have synthetic suggested fixes generated from secondary message
213+ require .Len (t , diagnostic .SuggestedFixes , 1 )
214+ require .Equal (t , "consider replacing with: `1.0`" , diagnostic .SuggestedFixes [0 ].Message )
215+ require .Len (t , diagnostic .SuggestedFixes [0 ].TextEdits , 1 )
216+ require .Equal (t , "1.0" , diagnostic .SuggestedFixes [0 ].TextEdits [0 ].Replacement )
217+ })
218+
192219 t .Run ("linter resolves imports from flowkit state" , func (t * testing.T ) {
193220 t .Parallel ()
194221
@@ -476,6 +503,12 @@ func setupMockState(t *testing.T) *flowkit.State {
476503 qqq
477504 }
478505 }` ), 0644 )
506+ _ = afero .WriteFile (mockFs , "ReplacementHint.cdc" , []byte (`
507+ access(all) contract ReplacementHint {
508+ access(all) fun test() {
509+ let x = UFix64(1)
510+ }
511+ }` ), 0644 )
479512 _ = afero .WriteFile (mockFs , "CadenceV1Error.cdc" , []byte (`
480513 access(all) contract CadenceV1Error {
481514 init() {
0 commit comments