liquid-java / liquid-java/latte
Assignment of field to parent field giving error
オープン
まだ誰も着手していません。
bug
- 主要言語
- Java
- スター
- 3
- フォーク
- 1
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Code issuing an error of NullPointerException
import java.util.Iterator;
import specification.Unique;
public class MyStackTest {
@Unique int[] a;
@Unique int size;
private class ReverseArrayIterator implements Iterator<Integer> {
public @Unique int i = size - 1;
//(true >> this.i >= 0 -> return )
@Override
public boolean hasNext() { return i >= 0; }
//(this.i >= 0 >> this.i == old(this.i) - 1)
@Override
public Integer next() { return a[i--]; }
}
}
Error message:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "context.UniquenessAnnotation.isGreaterEqualThan(context.Uniqueness)" because "permV" is null
at typechecking.LatteTypeChecker.visitCtFieldRead(LatteTypeChecker.java:270)
at spoon.support.reflect.code.CtFieldReadImpl.accept(CtFieldReadImpl.java:18)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.visitCtBinaryOperator(CtScanner.java:312)
at typechecking.LatteTypeChecker.visitCtBinaryOperator(LatteTypeChecker.java:572)
at spoon.support.reflect.code.CtBinaryOperatorImpl.accept(CtBinaryOperatorImpl.java:34)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.visitCtField(CtScanner.java:436)
at spoon.support.reflect.declaration.CtFieldImpl.accept(CtFieldImpl.java:53)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:149)
at spoon.reflect.visitor.CtScanner.visitCtClass(CtScanner.java:357)
at typechecking.LatteTypeChecker.visitCtClass(LatteTypeChecker.java:53)
at spoon.support.reflect.declaration.CtClassImpl.accept(CtClassImpl.java:63)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:149)
at spoon.reflect.visitor.CtScanner.visitCtClass(CtScanner.java:357)
at typechecking.LatteTypeChecker.visitCtClass(LatteTypeChecker.java:53)
at spoon.support.reflect.declaration.CtClassImpl.accept(CtClassImpl.java:63)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:194)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:149)
at spoon.reflect.visitor.CtScanner.visitCtPackage(CtScanner.java:679)
at spoon.support.reflect.declaration.CtPackageImpl.accept(CtPackageImpl.java:82)
at typechecking.LatteProcessor.process(LatteProcessor.java:31)
at typechecking.LatteProcessor.process(LatteProcessor.java:1)
at spoon.support.visitor.ProcessingVisitor.scan(ProcessingVisitor.java:72)
at spoon.support.QueueProcessingManager.process(QueueProcessingManager.java:118)
at spoon.support.QueueProcessingManager.process(QueueProcessingManager.java:132)
at api.App.launcher(App.java:90)
at api.App.main(App.java:31)
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
提供されている MyStackTest の例から始め、typechecking/LatteTypeChecker.java の 270 行目を調べてください。そこではフィールド読み取りのパスが permV をデリファレンスしています。親フィールドへの代入がどのように処理されるかを追跡し、この入力で NullPointerException が発生しなくなるように回帰ケースを追加または更新して、checker の結果の動作を確認してください。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100