test: add php8.2 true, null and false types test
This commit is contained in:
parent
66cc411e7c
commit
ce8b54eae1
@ -99,3 +99,303 @@ final readonly class Boo {
|
|||||||
|
|
||||||
suite.Run()
|
suite.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNullFalseTrueTypes(t *testing.T) {
|
||||||
|
suite := tester.NewParserDumpTestSuite(t)
|
||||||
|
suite.UsePHP8()
|
||||||
|
suite.Code = `<?php
|
||||||
|
function alwaysFalse(false $a): false {}
|
||||||
|
|
||||||
|
function alwaysTrue(true $a): true {}
|
||||||
|
|
||||||
|
function alwaysNull(null $a): null {}
|
||||||
|
|
||||||
|
class Bar {
|
||||||
|
public null $nil;
|
||||||
|
public true $true;
|
||||||
|
public false $false;
|
||||||
|
|
||||||
|
public function nil(null $nil): null {}
|
||||||
|
public function true(true $true): true {}
|
||||||
|
public function false(false $false): false {}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
suite.Expected = `&ast.Root{
|
||||||
|
Stmts: []ast.Vertex{
|
||||||
|
&ast.StmtFunction{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("alwaysFalse"),
|
||||||
|
},
|
||||||
|
Params: []ast.Vertex{
|
||||||
|
&ast.Parameter{
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("false"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$a"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ReturnType: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("false"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Stmts: []ast.Vertex{},
|
||||||
|
},
|
||||||
|
&ast.StmtFunction{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("alwaysTrue"),
|
||||||
|
},
|
||||||
|
Params: []ast.Vertex{
|
||||||
|
&ast.Parameter{
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("true"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$a"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ReturnType: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("true"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Stmts: []ast.Vertex{},
|
||||||
|
},
|
||||||
|
&ast.StmtFunction{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("alwaysNull"),
|
||||||
|
},
|
||||||
|
Params: []ast.Vertex{
|
||||||
|
&ast.Parameter{
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("null"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$a"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ReturnType: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("null"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Stmts: []ast.Vertex{},
|
||||||
|
},
|
||||||
|
&ast.StmtClass{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("Bar"),
|
||||||
|
},
|
||||||
|
Stmts: []ast.Vertex{
|
||||||
|
&ast.StmtPropertyList{
|
||||||
|
Modifiers: []ast.Vertex{
|
||||||
|
&ast.Identifier{
|
||||||
|
Val: []byte("public"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("null"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Props: []ast.Vertex{
|
||||||
|
&ast.StmtProperty{
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$nil"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&ast.StmtPropertyList{
|
||||||
|
Modifiers: []ast.Vertex{
|
||||||
|
&ast.Identifier{
|
||||||
|
Val: []byte("public"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("true"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Props: []ast.Vertex{
|
||||||
|
&ast.StmtProperty{
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$true"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&ast.StmtPropertyList{
|
||||||
|
Modifiers: []ast.Vertex{
|
||||||
|
&ast.Identifier{
|
||||||
|
Val: []byte("public"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("false"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Props: []ast.Vertex{
|
||||||
|
&ast.StmtProperty{
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$false"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&ast.StmtClassMethod{
|
||||||
|
Modifiers: []ast.Vertex{
|
||||||
|
&ast.Identifier{
|
||||||
|
Val: []byte("public"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("nil"),
|
||||||
|
},
|
||||||
|
Params: []ast.Vertex{
|
||||||
|
&ast.Parameter{
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("null"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$nil"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ReturnType: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("null"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Stmt: &ast.StmtStmtList{
|
||||||
|
Stmts: []ast.Vertex{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&ast.StmtClassMethod{
|
||||||
|
Modifiers: []ast.Vertex{
|
||||||
|
&ast.Identifier{
|
||||||
|
Val: []byte("public"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("true"),
|
||||||
|
},
|
||||||
|
Params: []ast.Vertex{
|
||||||
|
&ast.Parameter{
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("true"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$true"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ReturnType: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("true"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Stmt: &ast.StmtStmtList{
|
||||||
|
Stmts: []ast.Vertex{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&ast.StmtClassMethod{
|
||||||
|
Modifiers: []ast.Vertex{
|
||||||
|
&ast.Identifier{
|
||||||
|
Val: []byte("public"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("false"),
|
||||||
|
},
|
||||||
|
Params: []ast.Vertex{
|
||||||
|
&ast.Parameter{
|
||||||
|
Type: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("false"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Var: &ast.ExprVariable{
|
||||||
|
Name: &ast.Identifier{
|
||||||
|
Val: []byte("$false"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ReturnType: &ast.Name{
|
||||||
|
Parts: []ast.Vertex{
|
||||||
|
&ast.NamePart{
|
||||||
|
Val: []byte("false"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Stmt: &ast.StmtStmtList{
|
||||||
|
Stmts: []ast.Vertex{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},`
|
||||||
|
|
||||||
|
suite.Run()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user