import文でエラー"does not exist"の解決方法

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • importでの他クラスのメソッドの実装の仕方が知りたい

前提

kotlinコンパイラの改変を行っている者です。

Javaで抽象構文木を操作するプログラムを記述しています。

kotlin

1val size = 999999992while(i <= size+1){3 処理 4}

上記のサンプルコードをコンパイルするときのお話です。

サンプルコードのwhile文の継続条件(i <= size+1)の抽象構文木を生成したとき、その抽象構文木を操作する機能を実装中に以下のエラーメッセージが発生しました。
具体的には、他ディレクトリに存在しているソースコードにgetPsiElement(){...}というメソッドが存在します。
そのソースコードが存在しているディレクトリの絶対パスとファイル名、メソッドの行数は、以下の通りです。

/home/user/intellij-community/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/psi/impl/PropertyImpl.java:373: public PsiElement getPsiElement() {

発生している問題・エラーメッセージ

下記のソースコードをビルドすると、以下のようなエラーが発生します。

/home/hide/kotlin/compiler/psi/src/org/jetbrains/kotlin/psi/KtWhileExpressionBase.java:19: error: package com.intellij.lang.properties.psi.impl does not exist import com.intellij.lang.properties.psi.impl.PropertyImpl;

該当のソースコード

java

1package org.jetbrains.kotlin.psi;2 3//エラー箇所4import com.intellij.lang.properties.psi.impl.PropertyImpl;5import com.intellij.lang.ASTNode;6...7省略 8...9 10public abstract class KtWhileExpressionBase extends KtLoopExpression {11 public KtWhileExpressionBase(@NotNull ASTNode node) {12 super(node);13 14 }15 16 @Nullable17 public KtExpression getCondition() {18 KtExpression o = findExpressionUnder(KtNodeTypes.CONDITION);19 20 //この行のgetPsiElement()を実装したい21 PsiBinaryExpression binaryExpression = (PsiBinaryExpression) o.getPsiElement();22 }23}24 25

試したこと

webで検索し、importの機能や使い方を調べました。
いろいろ読み漁った結果、原因の候補として、コンパイラの起点からのパス表記が間違っている(import com.からではなく、import src.com.と記述しなければならない)かもなあ、と考えました。

しかし、他のimport(ソースコード中のimport com.intellij.lang.ASTNode;とか)はちゃんと動作しているので、わけがわからなくなってます。

補足情報(FW/ツールのバージョンなど)

VMware Workstation Player 16 上の Ubuntu 22.01 live-server 64bit に Kotlinコンパイラ を保存しています。(ubuntu上でgit cloneコマンドで複製、保存しました。)

コメントを投稿

0 コメント