Skip to content

Commit

Permalink
fixed handling of star imports
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexHaxe committed May 2, 2022
1 parent ed56ef5 commit eada3d5
Show file tree
Hide file tree
Showing 14 changed files with 68 additions and 39 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## dev branch / next version (2.x.x)

## 2.1.4 (2022-05-02)

- fixed handling of star imports

## 2.1.3 (2022-05-01)

- fixed package renaming
Expand Down
4 changes: 2 additions & 2 deletions haxelib.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
"refactor"
],
"description": "A code renaming tool for Haxe",
"version": "2.1.3",
"releasenote": "fixed package renaming",
"version": "2.1.4",
"releasenote": "fixed handling of star imports",
"contributors": [
"AlexHaxe"
],
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@haxecheckstyle/haxe-rename",
"version": "2.1.3",
"version": "2.1.4",
"description": "Renaming tool for Haxe",
"repository": {
"type": "git",
Expand Down
8 changes: 8 additions & 0 deletions src/refactor/discover/File.hx
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,10 @@ class File {
}
var fullModule:String = '$packName.$moduleName';
var fullSubModule:Null<String> = null;
var isMainModule:Bool = true;
if (moduleName != typeName) {
fullSubModule = '$fullModule.$typeName';
isMainModule = false;
}
for (importEntry in importList) {
if (importEntry.moduleName.name == fullModule) {
Expand All @@ -58,6 +60,11 @@ class File {
}
return Imported;
}
if (isMainModule && importEntry.starImport) {
if (importEntry.moduleName.name == packName) {
return StarImported;
}
}
}

if (importHxFile == null) {
Expand Down Expand Up @@ -152,4 +159,5 @@ enum ImportStatus {
SamePackage;
Imported;
ImportedWithAlias(alias:String);
StarImported;
}
4 changes: 2 additions & 2 deletions src/refactor/rename/RenameAnonStructField.hx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class RenameAnonStructField {
switch (use.file.importsModule(packName, mainModuleName, type.name.name)) {
case None:
continue;
case Global | SamePackage | Imported | ImportedWithAlias(_):
case Global | SamePackage | Imported | ImportedWithAlias(_) | StarImported:
}
changelist.addChange(use.pos.fileName, ReplaceText(context.what.toName, use.pos), use);
}
Expand Down Expand Up @@ -140,7 +140,7 @@ class RenameAnonStructField {
switch (baseTypeName.file.importsModule(use.file.getPackage(), use.file.getMainModulName(), baseTypeName.name)) {
case None:
continue;
case Global | SamePackage | Imported | ImportedWithAlias(_):
case Global | SamePackage | Imported | ImportedWithAlias(_) | StarImported:
}
return use.defineType;
}
Expand Down
6 changes: 2 additions & 4 deletions src/refactor/rename/RenameEnumField.hx
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@ class RenameEnumField {
if (alias != typeName) {
continue;
}
case Global:
case SamePackage:
case Imported:
case Global | SamePackage | Imported | StarImported:
}
RenameHelper.replaceTextWithPrefix(use, typeName, context.what.toName, changelist);
}
Expand Down Expand Up @@ -65,7 +63,7 @@ class RenameEnumField {
if (alias != typeName) {
continue;
}
case Global | SamePackage | Imported:
case Global | SamePackage | Imported | StarImported:
}
default:
continue;
Expand Down
2 changes: 1 addition & 1 deletion src/refactor/rename/RenameField.hx
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ class RenameField {
continue;
case ImportedWithAlias(_):
continue;
case Global | SamePackage | Imported:
case Global | SamePackage | Imported | StarImported:
}
RenameHelper.replaceTextWithPrefix(use, '${type.name.name}.', context.what.toName, changelist);
}
Expand Down
6 changes: 3 additions & 3 deletions src/refactor/rename/RenameHelper.hx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class RenameHelper {
var search:String = switch (use.file.importsModule(baseType.file.getPackage(), baseType.file.getMainModulName(), baseType.name.name)) {
case None:
continue;
case Global | SamePackage | Imported:
case Global | SamePackage | Imported | StarImported:
baseType.name.name;
case ImportedWithAlias(alias):
alias;
Expand Down Expand Up @@ -316,7 +316,7 @@ class RenameHelper {
switch (type.file.importsModule(candidate.file.getPackage(), candidate.file.getMainModulName(), candidate.name.name)) {
case None:
case ImportedWithAlias(_):
case Global | SamePackage | Imported:
case Global | SamePackage | Imported | StarImported:
return candidate;
}
}
Expand Down Expand Up @@ -359,7 +359,7 @@ class RenameHelper {
switch (hint.file.importsModule(type.file.getPackage(), type.file.getMainModulName(), type.name.name)) {
case None:
case ImportedWithAlias(_):
case Global | SamePackage | Imported:
case Global | SamePackage | Imported | StarImported:
return Promise.resolve(KnownType(type, typeParams));
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/refactor/rename/RenamePackage.hx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class RenamePackage {
}
switch (use.file.importsModule(packageName, mainTypeName, mainTypeName)) {
case None:
case Global | SamePackage:
case Global | SamePackage | StarImported:
var importPos:IdentifierPos = {fileName: use.pos.fileName, start: use.file.importInsertPos, end: use.file.importInsertPos}
changelist.addChange(use.pos.fileName, InsertText('import $newMainModulName;\n', importPos), use);
uniqueFiles.push(use.pos.fileName);
Expand Down
2 changes: 1 addition & 1 deletion src/refactor/rename/RenameTypeName.hx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class RenameTypeName {
if (alias != identifier.name) {
continue;
}
case Global | SamePackage | Imported:
case Global | SamePackage | Imported | StarImported:
}
changes.push(RenameHelper.findTypeOfIdentifier(context, {
name: use.name,
Expand Down
54 changes: 33 additions & 21 deletions test/refactor/ClassTest.hx
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ class ClassTest extends TestBase {
makeReplaceTestEdit("testcases/classes/BaseClass.hx", "addData", 121, 132),
makeReplaceTestEdit("testcases/classes/ChildClass.hx", "addData", 145, 156),
makeReplaceTestEdit("testcases/classes/ChildClass.hx", "addData", 187, 198),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "addData", 239, 250),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "addData", 355, 366),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "addData", 464, 475),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "addData", 652, 663),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "addData", 228, 239),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "addData", 344, 355),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "addData", 453, 464),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "addData", 641, 652),
];
refactorAndCheck({fileName: "testcases/classes/BaseClass.hx", toName: "addData", pos: 128}, edits, async);
}
Expand Down Expand Up @@ -71,14 +71,13 @@ class ClassTest extends TestBase {
makeReplaceTestEdit("testcases/classes/pack/SecondChildHelper.hx", "ItemClass", 38, 48),
makeReplaceTestEdit("testcases/classes/pack/SecondChildHelper.hx", "ItemClass", 111, 121),
makeReplaceTestEdit("testcases/classes/pack/SecondChildHelper.hx", "ItemClass", 163, 173),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 38, 48),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 67, 77),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 143, 153),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 210, 220),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 299, 309),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 423, 433),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 510, 520),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 623, 633),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 56, 66),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 132, 142),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 199, 209),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 288, 298),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 412, 422),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 499, 509),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ItemClass", 612, 622),
];
refactorAndCheck({fileName: "testcases/classes/ChildClass.hx", toName: "ItemClass", pos: 28}, edits, async);
}
Expand All @@ -91,16 +90,15 @@ class ClassTest extends TestBase {
makeInsertTestEdit("testcases/classes/EnumType.hx", "import classes.pack.ChildClass;\n", 18),
makeInsertTestEdit("testcases/classes/StaticUsing.hx", "import classes.pack.ChildClass;\n", 18),
makeReplaceTestEdit("testcases/classes/pack/SecondChildHelper.hx", "classes.pack.ChildClass", 30, 48),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "classes.pack.ChildClass", 30, 48),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "classes.pack.ChildClass", 59, 77),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "classes.pack.ChildClass", 48, 66),
];
refactorAndCheck({fileName: "testcases/classes/ChildClass.hx", toName: "classes.pack", pos: 10}, edits, async);
}

public function testRenameTypedef(async:Async) {
var edits:Array<TestEdit> = [
makeReplaceTestEdit("testcases/classes/ChildClass.hx", "ChildList", 868, 880),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ChildList", 107, 119),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "ChildList", 96, 108),
];
refactorAndCheck({fileName: "testcases/classes/ChildClass.hx", toName: "ChildList", pos: 872}, edits, async);
}
Expand All @@ -109,6 +107,7 @@ class ClassTest extends TestBase {
var edits:Array<TestEdit> = [
makeReplaceTestEdit("testcases/classes/ChildHelper.hx", "sumChilds", 62, 65),
makeReplaceTestEdit("testcases/classes/StaticUsing.hx", "sumChilds", 182, 185),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "sumChilds", 706, 709),
];
refactorAndCheck({fileName: "testcases/classes/ChildHelper.hx", toName: "sumChilds", pos: 64}, edits, async);
}
Expand All @@ -135,11 +134,11 @@ class ClassTest extends TestBase {
var edits:Array<TestEdit> = [
makeReplaceTestEdit("testcases/classes/ChildClass.hx", "parentBase", 67, 73),
makeReplaceTestEdit("testcases/classes/ChildHelper.hx", "parentBase", 310, 316),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 232, 238),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 348, 354),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 457, 463),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 566, 572),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 645, 651),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 221, 227),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 337, 343),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 446, 452),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 555, 561),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "parentBase", 634, 640),
];
refactorAndCheck({fileName: "testcases/classes/ChildClass.hx", toName: "parentBase", pos: 69}, edits, async);
}
Expand Down Expand Up @@ -176,6 +175,19 @@ class ClassTest extends TestBase {
refactorAndCheck({fileName: "testcases/classes/JsonClass.hx", toName: "jsonWidth", pos: 74}, edits, async);
}

public function testRenameJsonClass(async:Async) {
var edits:Array<TestEdit> = [
makeMoveTestEdit("testcases/classes/JsonClass.hx", "testcases/classes/JsonImporter.hx"),
makeReplaceTestEdit("testcases/classes/JsonClass.hx", "JsonImporter", 24, 33),
makeReplaceTestEdit("testcases/classes/JsonClass.hx", "JsonImporter", 276, 285),
makeReplaceTestEdit("testcases/classes/JsonClass.hx", "JsonImporter", 287, 296),
makeReplaceTestEdit("testcases/classes/JsonClass.hx", "JsonImporter", 319, 328),
makeReplaceTestEdit("testcases/classes/JsonClass.hx", "JsonImporter", 336, 345),
makeReplaceTestEdit("testcases/classes/pack/UseChild.hx", "JsonImporter", 744, 753),
];
refactorAndCheck({fileName: "testcases/classes/JsonClass.hx", toName: "JsonImporter", pos: 28}, edits, async);
}

public function testRenameBaseClassParamterWithShadow(async:Async) {
var edits:Array<TestEdit> = [
makeReplaceTestEdit("testcases/classes/BaseClass.hx", "data", 227, 228),
Expand All @@ -198,7 +210,7 @@ class ClassTest extends TestBase {

public function testRenameUseChildClassParentSubPart(async:Async) {
var edits:Array<TestEdit> = [];
failRefactor({fileName: "testcases/classes/UseChild.hx", toName: "data", pos: 233}, "could not find identifier to rename", async);
failRefactor({fileName: "testcases/classes/UseChild.hx", toName: "data", pos: 222}, "could not find identifier to rename", async);
}

public function testRenameBaseClassDataToData(async:Async) {
Expand Down
1 change: 1 addition & 0 deletions testcases/classes/import.hx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
package classes;

import refactor.discover.Identifier;
import classes.*;
8 changes: 7 additions & 1 deletion testcases/classes/pack/UseChild.hx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package classes.pack;

import classes.ChildClass.*;
import classes.*;
import classes.ChildClass;

class UseChild {
Expand Down Expand Up @@ -38,4 +38,10 @@ class UseChild {
child.parent.doSomething([]);
}
#end

function helperSum() {
ChildHelper.sum(list[0]);
}

function json(json:JsonClass) {}
}

0 comments on commit eada3d5

Please sign in to comment.