71 lines
1.7 KiB
PHP
71 lines
1.7 KiB
PHP
<?php
|
|
/**
|
|
* Test file for PHP LSP diagnostics
|
|
* Tests error, warning, info, and hint virtual text colors
|
|
*
|
|
* Note: Configure Intelephense to show different diagnostic levels:
|
|
* - diagnostics.undefinedSymbols = true (errors)
|
|
* - diagnostics.undefinedVariables = true (warnings)
|
|
* - diagnostics.unusedSymbols = "hint" (hints)
|
|
*/
|
|
|
|
// Define some valid functions and variables first to avoid cascading errors
|
|
function validFunction(): void {
|
|
echo "This is valid\n";
|
|
}
|
|
|
|
$definedVariable = "I exist";
|
|
|
|
// ERROR: Undefined function
|
|
someUndefinedFunction();
|
|
|
|
// ERROR: Undefined variable
|
|
echo $completelyUndefined;
|
|
|
|
// WARNING/HINT: Unused variable (depends on Intelephense config)
|
|
$unused = "Never used anywhere";
|
|
|
|
// Valid code to separate errors
|
|
validFunction();
|
|
|
|
// ERROR: Wrong number of arguments
|
|
function requiresTwoArgs(string $a, string $b): void {
|
|
echo "$a $b\n";
|
|
}
|
|
requiresTwoArgs("only one"); // Missing second argument
|
|
|
|
// ERROR: Type mismatch
|
|
function expectsString(string $param): void {
|
|
echo $param;
|
|
}
|
|
expectsString(123); // Passing int to string parameter
|
|
|
|
// WARNING: Variable might not be defined in all code paths
|
|
if (rand(0, 1)) {
|
|
$maybeUndefined = "sometimes defined";
|
|
}
|
|
// Commenting out to reduce errors: echo $maybeUndefined;
|
|
|
|
// Valid usage
|
|
echo $definedVariable . "\n";
|
|
|
|
// ERROR: Calling method on non-object
|
|
$notAnObject = "string";
|
|
$notAnObject->someMethod();
|
|
|
|
// ERROR: Invalid array access (multiple levels)
|
|
$emptyArray = [];
|
|
echo $emptyArray['key']['nested']['deep'];
|
|
|
|
// Valid function call
|
|
requiresTwoArgs("hello", "world");
|
|
|
|
// HINT/WARNING: Unreachable code (some configs)
|
|
function hasDeadCode(): string {
|
|
return "done";
|
|
echo "This is unreachable"; // Dead code
|
|
}
|
|
|
|
echo "Test complete!\n";
|
|
|