Added local label reference (not final yet), but referencing kind of works.

This commit is contained in:
2021-07-19 12:08:47 +02:00
parent 6073cd86ac
commit 66fa728a45
14 changed files with 244 additions and 72 deletions
@@ -0,0 +1,37 @@
package de.platon42.intellij.plugins.m68k.refs
import com.intellij.psi.PsiElement
import com.intellij.testFramework.fixtures.CodeInsightTestFixture
import de.platon42.intellij.jupiter.LightCodeInsightExtension
import de.platon42.intellij.jupiter.MyFixture
import de.platon42.intellij.jupiter.TestDataPath
import de.platon42.intellij.jupiter.TestDataSubPath
import de.platon42.intellij.plugins.m68k.AbstractM68kTest
import de.platon42.intellij.plugins.m68k.psi.M68kLocalLabel
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
@TestDataPath("src/test/resources/references")
@TestDataSubPath("labels")
@ExtendWith(LightCodeInsightExtension::class)
internal class M68kReferenceContributorTest : AbstractM68kTest() {
@Test
internal fun reference_to_dot_local_label(@MyFixture myFixture: CodeInsightTestFixture) {
// val reference = myFixture.getReferenceAtCaretPositionWithAssertion("dot_local_label.asm")
// assertThat(reference.element).isInstanceOf(M68kSym)
myFixture.configureByFile("dot_local_label.asm")
assertThat(myFixture.elementAtCaret).isInstanceOf(M68kLocalLabel::class.java)
.extracting(PsiElement::getText).isEqualTo(".loop")
}
@Test
internal fun reference_to_multiple_conditional_local_label_dollar(@MyFixture myFixture: CodeInsightTestFixture) {
val reference = myFixture.getReferenceAtCaretPositionWithAssertion("multiple_conditional_local_label_dollar.asm")
assertThat(reference.element).isInstanceOf(M68kLocalLabel::class.java)
myFixture.configureByFile("multiple_conditional_local_label_dollar.asm")
assertThat(myFixture.elementAtCaret).isInstanceOf(M68kLocalLabel::class.java)
.extracting(PsiElement::getText).isEqualTo("loop$")
}
}
@@ -0,0 +1,10 @@
main
tst.w d1
beq.s .skip
moveq.l #42,d0
.loop move.l d0,(a0)+
dbra d0,.l<caret>oop
.skip subq.w #1,d1
beq.s .loop
rts
@@ -0,0 +1,14 @@
main
tst.w d1
beq.s .skip
moveq.l #42,d0
IFEQ DATAWIDTH=4
loop$ move.l d0,(a0)+
ELSE
loop$ move.w d0,(a0)+
ENDC
dbra d0,l<caret>oop$
.skip subq.w #1,d1
beq.s loop$
rts