diff --git a/platform/core-impl/src/com/intellij/psi/impl/PsiFileFactoryImpl.java b/platform/core-impl/src/com/intellij/psi/impl/PsiFileFactoryImpl.java index 8d5ada92706c..53d3d4886e0c 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/PsiFileFactoryImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/PsiFileFactoryImpl.java @@ -191,16 +191,16 @@ public class PsiFileFactoryImpl extends PsiFileFactory { public PsiElement createElementFromText(@Nullable final String text, @NotNull final Language language, @NotNull final IElementType type, - @NotNull final PsiElement context) { + @Nullable final PsiElement context) { if (text == null) return null; - final DummyHolder result = DummyHolderFactory.createHolder(context.getManager(), language, context); + final DummyHolder result = DummyHolderFactory.createHolder(myManager, language, context); final FileElement holder = result.getTreeElement(); final ParserDefinition parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(language); if (parserDefinition == null) { throw new AssertionError("No parser definition for " + language); } - final Project project = context.getProject(); + final Project project = myManager.getProject(); final Lexer lexer = parserDefinition.createLexer(project); final PsiBuilder builder = PsiBuilderFactory.getInstance().createBuilder(project, holder, lexer, language, text); final ASTNode node = parserDefinition.createParser(project).parse(type, builder); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index 011242583a40..9cd4000274db 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -564,8 +564,11 @@ public class DocumentationManager { LookupElement item = activeLookup.getCurrentItem(); if (item != null) { - final PsiElement contextElement = file != null ? file.findElementAt(editor.getCaretModel().getOffset()) : null; - final PsiReference ref = TargetElementUtilBase.findReference(editor, editor.getCaretModel().getOffset()); + + int offset = editor.getCaretModel().getOffset(); + if (offset > 0 && offset == editor.getDocument().getTextLength()) offset--; + final PsiElement contextElement = file == null? null : file.findElementAt(offset); + final PsiReference ref = TargetElementUtilBase.findReference(editor, offset); final DocumentationProvider documentationProvider = getProviderFromElement(file);