Skip to content

Commit

Permalink
Treat trait properties as definitions (#40)
Browse files Browse the repository at this point in the history
* Tests: add test for traits with properties

* findVariableScope: consider traits also
  • Loading branch information
sirbrillig authored Apr 20, 2018
1 parent a5a01ba commit 57e4231
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
2 changes: 1 addition & 1 deletion VariableAnalysis/Lib/Helpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ public static function findVariableScope(File $phpcsFile, int $stackPtr) {
if (($scopeCode === T_FUNCTION) || ($scopeCode === T_CLOSURE)) {
return $scopePtr;
}
if (($scopeCode === T_CLASS) || ($scopeCode === T_INTERFACE)) {
if (in_array($scopeCode, [T_CLASS, T_INTERFACE, T_TRAIT])) {
$in_class = true;
}
}
Expand Down
12 changes: 12 additions & 0 deletions VariableAnalysis/Tests/CodeAnalysis/VariableAnalysisTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -401,4 +401,16 @@ public function testVariableFunctionCallsCountAsUsage() {
$expectedErrors = [];
$this->assertEquals($expectedErrors, $lines);
}

public function testTraitsAllowPropertyDefinitions() {
$fixtureFile = $this->getFixture('TraitWithPropertiesFixture.php');
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
$phpcsFile->process();
$lines = $this->getWarningLineNumbersFromFile($phpcsFile);
$expectedWarnings = [];
$this->assertEquals($expectedWarnings, $lines);
$lines = $this->getErrorLineNumbersFromFile($phpcsFile);
$expectedErrors = [];
$this->assertEquals($expectedErrors, $lines);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

trait Hello {
protected $storedHello;
public $helloOptions = [];
public function sayHelloWorld() {
echo "hello world";
}
abstract public function getWorld();
}

0 comments on commit 57e4231

Please sign in to comment.