public TextWithImportsImpl (PsiExpression expression) { myKind = CodeFragmentKind.EXPRESSION; final String text = expression.getText(); PsiFile containingFile = expression.getContainingFile(); if(containingFile instanceof PsiExpressionCodeFragment) { myText = text; myImports = ((JavaCodeFragment)containingFile).importsToString(); myFileType = StdFileTypes.JAVA; } else { Trinity<String, String, FileType> trinity = parseExternalForm(text); myText = trinity.first; myImports = trinity.second; myFileType = trinity.third; } }
public TextWithImportsImpl(@NotNull PsiElement expression) { myKind = CodeFragmentKind.EXPRESSION; final String text = expression.getText(); PsiFile containingFile = expression.getContainingFile(); if(containingFile instanceof PsiExpressionCodeFragment) { myText = text; myImports = ((JavaCodeFragment) containingFile).importsToString(); myFileType = JavaFileType.INSTANCE; } else { Trinity<String, String, FileType> trinity = parseExternalForm(text); myText = trinity.first; myImports = trinity.second; myFileType = trinity.third; } }
public PsiExpression getDescriptorEvaluation(DebuggerContext context) throws EvaluateException { PsiElement evaluationCode = getEvaluationCode(context); if(evaluationCode instanceof PsiExpressionCodeFragment) { return ((PsiExpressionCodeFragment)evaluationCode).getExpression(); } else { throw new EvaluateException(DebuggerBundle.message("error.cannot.create.expression.from.code.fragment"), null); } }
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { final Component editor = super.getTableCellEditorComponent(table, value, isSelected, row, column); final PsiType type = getRowType(table, row); if (type != null) { ((PsiExpressionCodeFragment)myCodeFragment).setExpectedType(type); } return editor; }
protected Cache initEvaluatorAndChildrenExpression(final Project project) { final Cache cache = new Cache(); try { Pair<PsiElement, PsiType> psiClassAndType = DebuggerUtilsImpl.getPsiClassAndType(getClassName(), project); PsiElement context = psiClassAndType.first; if(context == null) { throw EvaluateExceptionUtil.CANNOT_FIND_SOURCE_CLASS; } CodeFragmentFactory factory = DebuggerUtilsEx.findAppropriateCodeFragmentFactory(myReferenceExpression, context); JavaCodeFragment codeFragment = factory.createCodeFragment(myReferenceExpression, overrideContext(context), project); codeFragment.setThisType(psiClassAndType.second); DebuggerUtils.checkSyntax(codeFragment); cache.myPsiChildrenExpression = codeFragment instanceof PsiExpressionCodeFragment ? ((PsiExpressionCodeFragment) codeFragment).getExpression() : null; try { cache.myEvaluator = factory.getEvaluatorBuilder().build(codeFragment, null); } catch(UnsupportedExpressionException ex) { ExpressionEvaluator eval = CompilingEvaluatorImpl.create(project, context, element -> codeFragment); if(eval != null) { cache.myEvaluator = eval; } throw ex; } } catch(EvaluateException e) { cache.myException = e; } myCache = new SoftReference<>(cache); return cache; }
public PsiExpression getDescriptorEvaluation(DebuggerContext context) throws EvaluateException { PsiElement evaluationCode = getEvaluationCode(context); if(evaluationCode instanceof PsiExpressionCodeFragment) { return ((PsiExpressionCodeFragment) evaluationCode).getExpression(); } else { throw new EvaluateException(DebuggerBundle.message("error.cannot.create.expression.from.code.fragment"), null); } }
@NotNull @Override public PsiExpressionCodeFragment createExpressionCodeFragment(@NotNull final String text, @Nullable final PsiElement context, @Nullable final PsiType expectedType, final boolean isPhysical) { return new PsiExpressionCodeFragmentImpl(myProject, isPhysical, "fragment.java", text, expectedType, context); }