INRIA / INRIA/spoon

`CtModel#getAllTypes` returns a class which is not part of the AST

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

Description

Steps to reproduce:

1. Clone this repository: https://github.com/lets-blade/blade
2. Check out this revision: 926913f3eaa2bc44b4bb8703e7d61e773cccc4d0
3. Run the following code snippet (replace `/path/to/repo`):
```java
Launcher launcher = new Launcher();
launcher.addInputResource("/path/to/repo/src/main/java");
List types = launcher.buildModel().getAllTypes().stream()
.filter(t -> !t.getPosition().isValidPosition())
.collect(Collectors.toList());
System.out.println(types);
```

Result:
```bash
[class HttpVersion {}]
```

If I use grep to search for `HttpVersion`:

```bash
grep -r HttpVersion *
```

I get the following output:

```bash
src/main/java/com/blade/server/netty/HttpServerHandler.java:import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
src/main/java/com/blade/server/netty/StaticFileHandler.java:import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
src/main/java/com/blade/server/netty/StaticFileHandler.java: HttpResponse httpResponse = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
src/main/java/com/blade/server/netty/StaticFileHandler.java: FullHttpResponse httpResponse = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, OK, staticInputStream.asByteBuf());
src/main/java/com/blade/server/netty/RouteMethodHandler.java:import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
src/main/java/com/blade/mvc/wrapper/OutputStreamWrapper.java: HttpResponse httpResponse = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
src/main/java/com/blade/mvc/handler/DefaultExceptionHandler.java:import io.netty.handler.codec.http.HttpVersion;
src/main/java/com/blade/mvc/handler/DefaultExceptionHandler.java: FullHttpResponse fullHttpResponse = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.valueOf(response.statusCode()), buffer);
```

So `HttpVersion` is not part of my input source. I tested version 7.4.0 and 7.5.0-beta-21.

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.