redhat-developer / redhat-developer/vscode-java

Annotation processor in project incorrectly yields "[Java] <generated type> cannot be resolved to a type"

オープン
#682 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

codegen
主要言語
TypeScript
スター
2.3k
フォーク
546
平均マージ
20時間 1分
マージ済み PR(30日)
11

説明

I have access to a specific (large) project here which makes use of

@SupportedAnnotationTypes({"the.namespace.TheAnnotation"})
@SupportedSourceVersion(SourceVersion.RELEASE_10)

to create an annotation processor

public class TheAnnotationProcessor extends AbstractProcessor {

for an annotation the.namespace.TheAnnotation in that project

public @interface TheAnnotation {

which produces an interface (e.g. GeneratedInterfaceSpecificMapper, see below) with plenty of default. In the very same project, this annotation is also applied to some classes,

@TheAnnotation(Specific.class)
public class SpecificMapper implements GeneratedInterfaceSpecificMapper {  

Evidently, maven discovers the annotation, the annotation processor, runs code generation through the processor (files appear in generated-sources/annotations/...) and is able to also compile the source files that make use of the GeneratedInterfaceSpecificMapper.

The vscode plugin flags the type GeneratedInterfaceSpecificMapper as faulty, with "[Java] cannot be resolved to a type". This seems to indicate that the vscode plugin is not aware of the generated artefacts in generated-sources/annotations/...

I have had a look at https://www.baeldung.com/java-annotation-processing-builder to see whether this produces the error - alas, that setup there seems to be too clean / too simplistic to trigger the problem.

Environment
  • Operating System: Linux Fedora 28
  • JDK version: 10.0.2
  • Visual Studio Code version: 1.28.2
  • Java extension version: java-0.33.0-1252.vsix
Steps To Reproduce

<large project, will try to find time to reduce>

Current Result
  • builds fine in maven
  • red squiggles in IDE / syntax check failure
Expected Result
  • builds fine in maven
  • no red squiggles in IDE
Additional Informations

Not sure whether this related to the issues reported for Lombok - e.g #580 or #458

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

Java 拡張機能のアノテーション処理パスと、レポートで説明されている generated-sources/annotations/... への出力から始め、参照されているアノテーションプロセッサと GeneratedInterfaceSpecificMapper を使用して Maven と IDE の不一致を再現してください。縮小したプロジェクトまたは同等の再現が必要であり、Maven のビルドが引き続き成功し、IDE が生成された型を未解決として報告しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java, typescript, vscode
領域
developer-experience, devtools
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
30/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。