INRIA / INRIA/spoon

[Bug]: ImportCleaner - removes inner class import

Open
#6,449 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
2k
Forks
392
Avg merge
11h 24m
Merged PRs (30d)
36

Description

### Describe the bug

The ImportCleaner removes inner class import while using default pretty printer or sniper pretty printer

### Source code you are trying to analyze/transform

```Java

```

### Source code for your Spoon processing

```Java
launcher.getEnvironment().setNoClasspath(true);
launcher.getEnvironment().setIgnoreDuplicateDeclarations(true);
launcher.getEnvironment().setPrettyPrinterCreator(() -> {
SniperJavaPrettyPrinter printer = new SniperJavaPrettyPrinter(launcher.getEnvironment());
List> preprocessors = List.of(
//try to import as much types as possible
new ForceImportProcessor(),
//remove unused imports first. Do not add new imports at time when conflicts are not resolved
new ImportCleaner().setCanAddImports(false),
//solve conflicts, the current imports are relevant too
new ImportConflictDetector(),
//compute final imports
new ImportCleaner().setImportComparator(new DefaultImportComparator())
);
printer.setIgnoreImplicit(false);
printer.setPreprocessors(preprocessors);
return printer;
});
```

### Actual output

```Java
package com;

import com.A;
import com.A.Inner;
import com.B;

class Foo{}
```

### Expected output

```Java
package com;

import com.A;
import com.B;

class Foo{}
```

### Spoon Version

11.2.1

### JVM Version

17

### What operating system are you using?

mac 15.4.1

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.