shortenFullyQualifiedTypes does not shorten all the fully qualified types
- Dominant language
- Java
- Stars
- 5.6k
- Forks
- 559
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 34
Description
## Summary
`shortenFullyQualifiedTypes` shortens a fully-qualified reference into the simple name of a type declared in the same compilation unit. The result does not compile.
## Reproducer
`spotless-gradle-plugin` 8.10.1, with `shortenFullyQualifiedTypes` as one of the steps:
### Test example 1:
```java
import java.lang.management.BufferPoolMXBean;
import java.util.List;
public class ClassA
{
public void methodA()
{
final List pools = java.lang.management.ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
}
}
```
#### Actual behavior of example 1:
Type `java.lang.management.ManagementFactory` used in code is not shortened.
### Test example 2:
```java
public class classB {
final List connectionProps = List.of(new CustomTypeProperty().name("host")
.type(pkg.models.CustomTypeProperty.TypeEnum.STRING));
}
```
#### Actual behavior of example 2:
Type `pkg.models.CustomTypeProperty` used in code is not shortened.
## Expected behavior
All FQT should be shortened.
FYI @maxandersen
Contributor guide
Research direction
Start with the `shortenFullyQualifiedTypes` step in the spotless-gradle-plugin and reproduce the two Java examples from the issue using version 8.10.1. Trace why fully qualified references such as `ManagementFactory` and `pkg.models.CustomTypeProperty.TypeEnum` remain unchanged, then verify that all fully qualified types are shortened and the resulting code compiles.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- build-system, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100