@@ -40,6 +40,10 @@ class v0_5 extends SemanticRule("v0_5") {
40
40
41
41
val ScalacOptionsSym = JavaMajorVersionSym + ScalacOptionSym + ScalaVersionSym
42
42
43
+ // autoImport contents
44
+ val TpolecatPluginAutoImportSym =
45
+ SymbolMatcher .exact(" io/github/davidgregory084/TpolecatPlugin.autoImport." )
46
+
43
47
private def makeSelector (packages : String * ): Term .Ref =
44
48
packages.tail.foldLeft(Term .Name (packages.head): Term .Ref ) { case (selector, pkg) =>
45
49
Term .Select (selector, Term .Name (pkg))
@@ -50,6 +54,14 @@ class v0_5 extends SemanticRule("v0_5") {
50
54
Importer (makeSelector(" org" , " typelevel" , " sbt" , " tpolecat" ), List (importee))
51
55
)
52
56
57
+ private def makeAutoImportObjectImport (importee : Importee ) =
58
+ Patch .addGlobalImport(
59
+ Importer (
60
+ makeSelector(" org" , " typelevel" , " sbt" , " tpolecat" , " TpolecatPlugin" , " autoImport" ),
61
+ List (importee)
62
+ )
63
+ )
64
+
53
65
private def makeScalacOptionsImport (importee : Importee ) =
54
66
Patch .addGlobalImport(
55
67
Importer (makeSelector(" org" , " typelevel" , " scalacoptions" ), List (importee))
@@ -72,5 +84,14 @@ class v0_5 extends SemanticRule("v0_5") {
72
84
makeScalacOptionsImport(importee) +
73
85
Patch .removeImportee(importee)
74
86
}.asPatch
87
+ case importer @ Importer (ref, importees) if TpolecatPluginAutoImportSym .matches(ref) =>
88
+ importees.collect {
89
+ case importee @ Importee .Name (name) =>
90
+ makeAutoImportObjectImport(importee) + Patch .removeImportee(importee)
91
+ case rename @ Importee .Rename (name, _) =>
92
+ makeAutoImportObjectImport(rename) + Patch .removeImportee(rename)
93
+ case importee @ Importee .Wildcard () =>
94
+ makeAutoImportObjectImport(importee) + Patch .removeImportee(importee)
95
+ }.asPatch
75
96
}.asPatch
76
97
}
0 commit comments