Skip to content

Commit

Permalink
PropertyWithoutAnnotationInspection: fixing Fluent direct type;
Browse files Browse the repository at this point in the history
  • Loading branch information
rentalhost committed Jun 22, 2017
1 parent 03fb4df commit 3160e96
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class Fluent
$fluentInstantiatedDirectly = new FluentDirect;
$fluentInstantiatedDirectly->shouldNotAccept;

class ChildFluent extends Fluent
class ChildFluent extends FluentDirect
{
public $publicIsOkay;
}
Expand All @@ -52,4 +52,11 @@ class ChildFluent extends Fluent
// Code-coverage:
$fluentInstantiatedIndirectly->{'fieldNameIsEmpty'};
class NotAFluent
{
}
$notAFluentInstance = new NotAFluent();
$notAFluentInstance->shouldBeIgnored;
}
20 changes: 14 additions & 6 deletions src/laravelInsight/fluent/FluentUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ static boolean isUsingDirectly(@Nullable final PsiElement parameter) {

final PhpClass expressionClass = expressionClasses.get(0);
final String expressionClassFQN = expressionClass.getFQN();
final boolean isDirectInstance = expressionClassFQN.equals(LaravelClasses.SUPPORT_FLUENT.toString()) ||
expressionClassFQN.equals(LaravelClasses.SUPPORT_FLUENT_L54.toString());
final boolean isDirectInstance = isFluentFQN(expressionClassFQN);

if (!isDirectInstance &&
(PhpClassUtil.findSuperOfType(expressionClass, LaravelClasses.SUPPORT_FLUENT.toString()) == null)) {
Expand All @@ -39,7 +38,7 @@ static boolean isUsingDirectly(@Nullable final PsiElement parameter) {
// new \Facades\Illuminate\Support\Fluent (facade, from Laravel 5.4);
// Case #2: new \Fluent (facade);
return isDirectInstance ||
(StringUtils.countMatches(expressionClassFQN, "\\") == 1);
isFacade(expressionClassFQN);
}

static boolean isUsingIndirectly(@Nullable final PsiElement parameter) {
Expand All @@ -56,8 +55,17 @@ static boolean isUsingIndirectly(@Nullable final PsiElement parameter) {
final PhpClass expressionClass = expressionClasses.get(0);
final String expressionClassFQN = expressionClass.getFQN();

return !expressionClassFQN.equals(LaravelClasses.SUPPORT_FLUENT.toString()) &&
!expressionClassFQN.equals(LaravelClasses.SUPPORT_FLUENT_L54.toString()) &&
(PhpClassUtil.findSuperOfType(expressionClass, LaravelClasses.SUPPORT_FLUENT.toString()) == null);
return !isFluentFQN(expressionClassFQN) &&
!isFacade(expressionClassFQN) &&
(PhpClassUtil.findSuperOfType(expressionClass, LaravelClasses.SUPPORT_FLUENT.toString()) != null);
}

private static boolean isFacade(final String classFQN) {
return StringUtils.countMatches(classFQN, "\\") == 1;
}

private static boolean isFluentFQN(final String classFQN) {
return classFQN.equals(LaravelClasses.SUPPORT_FLUENT.toString()) ||
classFQN.equals(LaravelClasses.SUPPORT_FLUENT_L54.toString());
}
}

0 comments on commit 3160e96

Please sign in to comment.