public GoImportPackageQuickFix(@NotNull PsiReference reference) { super(reference.getElement()); myPackageName = reference.getCanonicalText(); }
@NotNull private static LocalQuickFix[] createImportPackageFixes(@NotNull PsiElement target, @NotNull PsiReference reference, boolean onTheFly) { if (onTheFly) { GoImportPackageQuickFix importFix = new GoImportPackageQuickFix(reference); if (importFix.isAvailable(target.getProject(), target.getContainingFile(), target, target)) { return new LocalQuickFix[]{importFix}; } } else { List<String> packagesToImport = GoImportPackageQuickFix.getImportPathVariantsToImport(reference.getCanonicalText(), target); if (!packagesToImport.isEmpty()) { Collection<LocalQuickFix> result = ContainerUtil.newArrayList(); for (String importPath : packagesToImport) { GoImportPackageQuickFix importFix = new GoImportPackageQuickFix(target, importPath); if (importFix.isAvailable(target.getProject(), target.getContainingFile(), target, target)) { result.add(importFix); } } return result.toArray(new LocalQuickFix[result.size()]); } } return LocalQuickFix.EMPTY_ARRAY; }
@Override public void visitEntry(@NotNull IgnoreEntry entry) { PsiReference[] references = entry.getReferences(); boolean resolved = true; int previous = Integer.MAX_VALUE; for (PsiReference reference : references) { ProgressManager.checkCanceled(); if (reference instanceof FileReferenceOwner) { PsiPolyVariantReference fileReference = (PsiPolyVariantReference) reference; ResolveResult[] result = fileReference.multiResolve(false); resolved = result.length > 0 || (previous > 0 && reference.getCanonicalText().endsWith("/*")); previous = result.length; } if (!resolved) { break; } } if (!resolved) { if (!isEntryExcluded(entry, holder.getProject())) { holder.registerProblem(entry, IgnoreBundle.message("codeInspection.unusedEntry.message"), new IgnoreRemoveEntryFix(entry)); } } super.visitEntry(entry); }
private void doResolveTest() { if (myReference == null) fail("no reference defined in test case"); if (myShouldBeResolved && !allowNullDefinition() && myDefinition == null) fail("no definition defined in test case"); PsiElement resolve = myReference.resolve(); if (myShouldBeResolved) { assertNotNull("cannot resolve reference " + myReference.getCanonicalText(), resolve); if (myDefinition != null) { PsiElement def = PsiTreeUtil.getParentOfType(myDefinition, resolve.getClass(), false); assertSame("element resolved in non-expected element from " + getFileName(resolve) + ":\n" + resolve.getText(), def, resolve); } } else if (resolve != null) { fail("element is resolved but it wasn't should. resolved to element from " + getFileName(resolve) + ":\n" + resolve.getText()); } }
for (PsiReference reference : importSpec.getImportString().getReferences()) { if (reference instanceof GoImportReference) { String canonicalText = reference.getCanonicalText(); if (resolvedToSdk && GoConstants.TESTDATA_NAME.equals(canonicalText)) { problemsHolder.registerProblem(importSpec, "Use of testdata package from SDK is not allowed", new GoDeleteImportQuickFix());
private void doResolveTest() { if (myReference == null) { fail("no reference defined in test case"); } if (myShouldBeResolved && !allowNullDefinition() && myDefinition == null) { fail("no definition defined in test case"); } PsiElement resolve = myReference.resolve(); if (myShouldBeResolved) { assertNotNull("cannot resolve reference " + myReference.getCanonicalText(), resolve); if (myDefinition != null) { PsiElement def = PsiTreeUtil.getParentOfType(myDefinition, resolve.getClass(), false); assertSame("element resolved in non-expected element from " + getFileName(resolve) + ":\n" + resolve.getText(), def, resolve); } } else if (resolve != null) { fail("element is resolved but it wasn't should. resolved to element from " + getFileName(resolve) + ":\n" + resolve.getText()); } }
Assert.assertTrue("Renamed reference wasn't found in the canonical text", psiReference.getCanonicalText().contains("myFunction_renamed"));
"?".equals(reference.getCanonicalText()) && !(reference instanceof BnfReferenceImpl)) continue; reportAtEnd = ThreeState.NO;
Assert.assertTrue("Renamed reference wasn't found in the canonical text", psiReference.getCanonicalText().contains("a_renamed"));
private void doRename(Runnable renameLogic, String newName, String... sourceFiles) { myFixture.setTestDataPath(getTestDataPath() + getTestName(true)); myFixture.configureByFiles(sourceFiles); renameLogic.run(); for (String filename : sourceFiles) { myFixture.checkResultByFile(filename, FileUtil.getNameWithoutExtension(filename) + "_after." + FileUtilRt.getExtension(filename), false); } PsiElement psiElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset()); Assert.assertNotNull("caret element is null", psiElement); while (psiElement.getReference() == null) { if (psiElement.getParent() == null) { break; } psiElement = psiElement.getParent(); } PsiReference psiReference = psiElement.getReference(); Assert.assertNotNull("target file reference wasn't found", psiReference); Assert.assertTrue("Renamed reference wasn't found in the canonical text: " + psiReference.getCanonicalText(), psiReference.getCanonicalText().contains(newName)); PsiElement targetMarker = psiReference.resolve(); Assert.assertNotNull("target file resolve result wasn't found", targetMarker); Assert.assertTrue("target is not a psi file", targetMarker instanceof BashHereDocMarker); } }
Assert.assertTrue("Renamed reference wasn't found in the canonical text", psiReference.getCanonicalText().contains("target_renamed.bash"));
@Test public void testNonProjectFile() throws Exception { String content = "export X=\necho $X"; PsiFile psiFile = createTempPsiFile(content); PsiElement var = psiFile.findElementAt(content.indexOf("$X") + 1); Assert.assertNotNull(var); Assert.assertEquals("$X", var.getText()); PsiReference reference = var.getParent().getReference(); Assert.assertNotNull(reference); Assert.assertEquals("X", reference.getCanonicalText()); PsiElement varDef = reference.resolve(); Assert.assertNotNull(varDef); Assert.assertTrue(varDef instanceof BashVarDef); Assert.assertNotNull(((BashVarDef) varDef).getName()); }
/** * Tests the basic rename feature for references pointing to files. * * @throws Exception */ @Test @Ignore public void _testBasicFileRename() throws Exception { doMove(new String[]{"source.bash", "subdir/source2.bash"}, "target.bash", "subdir"); PsiReference targetBashRef = myFixture.getReferenceAtCaretPositionWithAssertion("source.bash"); Assert.assertNotNull("target file reference wasn't found", targetBashRef); String canonicalText = targetBashRef.getCanonicalText(); Assert.assertTrue("Renamed reference wasn't found in the canonical text: " + canonicalText, canonicalText.contains("subdir/target.bash")); PsiElement targetFile = targetBashRef.resolve(); Assert.assertNotNull("target file resolve result wasn't found", targetFile); Assert.assertTrue("target is not a psi file", targetFile instanceof BashFile); PsiElement parent = targetFile.getParent(); Assert.assertTrue("target file is not in the target dir", parent instanceof PsiDirectory); Assert.assertEquals("target file is not in the target dir named subdir ", "subdir", ((PsiDirectory) parent).getName()); }