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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user