Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1344,6 +1344,9 @@ private void autoCompleteInClassContext(
if (!foundConst && !foundFunction) {
autoCompleteKeywords(completionResult, request, PHP_SET_VISIBILITY_KEYWORDS);
autoCompleteKeywords(completionResult, request, PHP_ASYMMETRIC_VISIBILITY_KEYWORDS);
if (!completeAfterModificatorsKeywords(tokenSequence, caretOffset, th, info.getSnapshot().getSource().getFileObject())){
autoCompleteKeywords(completionResult, request, Arrays.asList("use"));
}
}
if (offerMagicAndInherited(tokenSequence, caretOffset, th)) {
EnclosingClass enclosingClass = findEnclosingClass(info, lexerToASTOffset(info, caretOffset));
Expand Down Expand Up @@ -1551,6 +1554,29 @@ private boolean completeFieldTypes(TokenSequence<PHPTokenId> tokenSequence, int
return completeTypes;
}

private boolean completeAfterModificatorsKeywords(TokenSequence<PHPTokenId> tokenSequence, int caretOffset, TokenHierarchy<?> th, FileObject fileObject) {
boolean completeAfterModificatorsKeywords = false;
tokenSequence.move(caretOffset);
if (!(!tokenSequence.moveNext() && !tokenSequence.movePrevious())) {
Token<PHPTokenId> token = tokenSequence.token();
int tokenIdOffset = tokenSequence.token().offset(th);
completeAfterModificatorsKeywords = CompletionContextFinder.lineContainsAny(token, caretOffset - tokenIdOffset, tokenSequence, Arrays.asList(
PHPTokenId.PHP_PUBLIC,
PHPTokenId.PHP_PUBLIC_SET,
PHPTokenId.PHP_PRIVATE,
PHPTokenId.PHP_PRIVATE_SET,
PHPTokenId.PHP_PROTECTED,
PHPTokenId.PHP_PROTECTED_SET,
PHPTokenId.PHP_ABSTRACT,
PHPTokenId.PHP_STATIC,
PHPTokenId.PHP_VAR,
PHPTokenId.PHP_READONLY,
PHPTokenId.PHP_FINAL
));
}
return completeAfterModificatorsKeywords;
}

private static Set<String> toNames(Set<? extends PhpElement> elements) {
Set<String> names = new HashSet<>();
for (PhpElement elem : elements) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ CLASS TestIssue145206 [PUBLIC] issue145206.php
CLASS TestIssue146176 [PUBLIC] issue146176.php
CLASS TestOptionalArgsClass [PUBLIC] optional_args.php
CLASS TypesinPHPDoc [PUBLIC] types_in_phpdoc.php
CLASS UseKeywordClass [PUBLIC] useKeywordInClass.php
CLASS User [PUBLIC] issue142051.php
CLASS User147427 [PUBLIC] issue147427.php
CLASS VarAdvancedTest [PUBLIC] varAssignment2.php
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ CLASS TestIssue145206 [PUBLIC] issue145206.php
CLASS TestIssue146176 [PUBLIC] issue146176.php
CLASS TestOptionalArgsClass [PUBLIC] optional_args.php
CLASS TypesinPHPDoc [PUBLIC] types_in_phpdoc.php
CLASS UseKeywordClass [PUBLIC] useKeywordInClass.php
CLASS User [PUBLIC] issue142051.php
CLASS User147427 [PUBLIC] issue147427.php
CLASS VarAdvancedTest [PUBLIC] varAssignment2.php
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ CLASS TestIssue145206 [PUBLIC] issue145206.php
CLASS TestIssue146176 [PUBLIC] issue146176.php
CLASS TestOptionalArgsClass [PUBLIC] optional_args.php
CLASS TypesinPHPDoc [PUBLIC] types_in_phpdoc.php
CLASS UseKeywordClass [PUBLIC] useKeywordInClass.php
CLASS User [PUBLIC] issue142051.php
CLASS User147427 [PUBLIC] issue147427.php
CLASS VarAdvancedTest [PUBLIC] varAssignment2.php
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ CLASS TestIssue145206 [PUBLIC] issue145206.php
CLASS TestIssue146176 [PUBLIC] issue146176.php
CLASS TestOptionalArgsClass [PUBLIC] optional_args.php
CLASS TypesinPHPDoc [PUBLIC] types_in_phpdoc.php
CLASS UseKeywordClass [PUBLIC] useKeywordInClass.php
CLASS UseKeywordEnum [PUBLIC] useKeywordInEnum.php
CLASS User [PUBLIC] issue142051.php
CLASS User147427 [PUBLIC] issue147427.php
CLASS VarAdvancedTest [PUBLIC] varAssignment2.php
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ CLASS TestIssue145206 [PUBLIC] issue145206.php
CLASS TestIssue146176 [PUBLIC] issue146176.php
CLASS TestOptionalArgsClass [PUBLIC] optional_args.php
CLASS TypesinPHPDoc [PUBLIC] types_in_phpdoc.php
CLASS UseKeywordClass [PUBLIC] useKeywordInClass.php
CLASS UseKeywordEnum [PUBLIC] useKeywordInEnum.php
CLASS User [PUBLIC] issue142051.php
CLASS User147427 [PUBLIC] issue147427.php
CLASS VarAdvancedTest [PUBLIC] varAssignment2.php
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ CLASS TestIssue145206 [PUBLIC] issue145206.php
CLASS TestIssue146176 [PUBLIC] issue146176.php
CLASS TestOptionalArgsClass [PUBLIC] optional_args.php
CLASS TypesinPHPDoc [PUBLIC] types_in_phpdoc.php
CLASS UseKeywordClass [PUBLIC] useKeywordInClass.php
CLASS User [PUBLIC] issue142051.php
CLASS User147427 [PUBLIC] issue147427.php
CLASS VarAdvancedTest [PUBLIC] varAssignment2.php
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

class UseKeywordClass {
use TestKeywordTrait;
}


trait TestKeywordTrait {}

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Code completion result for source line:
u|se TestKeywordTrait;
(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
------------------------------------
KEYWORD use null
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

enum UseKeywordEnum {
use TestKeywordTrait;
}

trait TestKeywordTrait {}

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Code completion result for source line:
u|se TestKeywordTrait;
(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
------------------------------------
KEYWORD use null
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

interface UseKeywordInterface {
use TestKeywordTrait;
}

trait TestKeywordTrait {}

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Code completion result for source line:
u|se TestKeywordTrait;
(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

trait UseKeywordTrait {
use TestKeywordTrait;
}

trait TestKeywordTrait {}

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Code completion result for source line:
u|se TestKeywordTrait;
(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
------------------------------------
KEYWORD use null
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ KEYWORD public protected(set) null
KEYWORD public(set) null
KEYWORD readonly null
KEYWORD static null
KEYWORD use null
KEYWORD var null
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ KEYWORD public protected(set) null
KEYWORD public(set) null
KEYWORD readonly null
KEYWORD static null
KEYWORD use null
KEYWORD var null
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ KEYWORD public protected(set) null
KEYWORD public(set) null
KEYWORD readonly null
KEYWORD static null
KEYWORD use null
KEYWORD var null
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ KEYWORD public protected(set) null
KEYWORD public(set) null
KEYWORD readonly null
KEYWORD static null
KEYWORD use null
KEYWORD var null
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,5 @@ KEYWORD public protected(set) null
KEYWORD public(set) null
KEYWORD readonly null
KEYWORD static null
KEYWORD use null
KEYWORD var null
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,5 @@ KEYWORD public protected(set) null
KEYWORD public(set) null
KEYWORD readonly null
KEYWORD static null
KEYWORD use null
KEYWORD var null
Original file line number Diff line number Diff line change
Expand Up @@ -869,6 +869,21 @@ public void testIssue202281() throws Exception {
checkCompletion("testfiles/completion/lib/_base/issue202281.php", "function^Name($myInt);", false);
}

public void testUseKeywordInClass() throws Exception {
checkCompletion("testfiles/completion/lib/_base/useKeywordInClass.php", "u^se", false);
}

public void testUseKeywordInTrait() throws Exception {
checkCompletion("testfiles/completion/lib/_base/useKeywordInTrait.php", "u^se", false);
}

public void testUseKeywordInEnum() throws Exception {
checkCompletion("testfiles/completion/lib/_base/useKeywordInEnum.php", "u^se", false);
}
public void testUseKeywordInInterface() throws Exception {
checkCompletion("testfiles/completion/lib/_base/useKeywordInInterface.php", "u^se", false);
}

@Override
protected Map<String, ClassPath> createClassPathsForTest() {
//just test them as standalone files (just PHP Platform in index)
Expand Down
Loading