diff --git a/src/linter/block_linter.go b/src/linter/block_linter.go index bd7bc368..209680bd 100644 --- a/src/linter/block_linter.go +++ b/src/linter/block_linter.go @@ -22,8 +22,24 @@ type blockLinter struct { quickfix *QuickFixGenerator } +func (b *blockLinter) checkStringInterpolationDeprecated(str *ir.Encapsed) { + for _, item := range str.Parts { + variable, ok := item.(*ir.SimpleVar) + if ok { + if variable.IdentifierTkn.Value[0] != 36 { // 36 is $ + b.report(str, LevelWarning, "stringInterpolationDeprecated", "use {$variable} instead ${variable}}") + break + } + } + } +} + func (b *blockLinter) enterNode(n ir.Node) { switch n := n.(type) { + + case *ir.Encapsed: + b.checkStringInterpolationDeprecated(n) + case *ir.Assign: b.checkAssign(n) diff --git a/src/linter/report.go b/src/linter/report.go index d1914da3..56f7aa46 100644 --- a/src/linter/report.go +++ b/src/linter/report.go @@ -609,6 +609,15 @@ g();`, }`, }, + { + Name: "stringInterpolationDeprecated", + Default: true, + Quickfix: false, + Comment: `Report deprecated string interpolation style`, + Before: `${variable}`, + After: `{$variable}`, + }, + { Name: "misspellName", Default: true,