rename meta to freefloating; refactoring

This commit is contained in:
z7zmey 2019-02-13 22:18:07 +02:00
parent a7082117d9
commit b3800a2595
309 changed files with 9671 additions and 10115 deletions

View File

@ -0,0 +1,16 @@
// Code generated by "stringer -type=Position -output ./position_string.go"; DO NOT EDIT.
package freefloating
import "strconv"
const _Position_name = "StartEndSlashColonSemiColonAltEndDollarAmpersandNamePrefixKeyVarUseTypeReturnTypeOptionalTypeCaseSeparatorLexicalVarsParamsRefCastExprInitExprCondExprIncExprTrueCondHaltCompillerNamespaceStaticClassUseWhileForSwitchBreakForeachDeclareLabelFinallyListDefaultIfElseIfElseVariadicFunctionAliasAsEqualExitArrayIssetEmptyEvalEchoTryCatchUnsetStmtsVarListConstListNameListParamListModifierListArrayPairListCaseListStartCaseListEndArgumentListPropertyListParameterListAdaptationListLexicalVarListUseDeclarationListOpenParenthesisTokenCloseParenthesisToken"
var _Position_index = [...]uint16{0, 5, 8, 13, 18, 27, 33, 39, 48, 52, 58, 61, 64, 71, 81, 93, 106, 117, 123, 126, 130, 134, 142, 150, 157, 161, 165, 178, 187, 193, 198, 201, 206, 209, 215, 220, 227, 234, 239, 246, 250, 257, 259, 265, 269, 277, 285, 290, 292, 297, 301, 306, 311, 316, 320, 324, 327, 332, 337, 342, 349, 358, 366, 375, 387, 400, 413, 424, 436, 448, 461, 475, 489, 507, 527, 548}
func (i Position) String() string {
if i < 0 || i >= Position(len(_Position_index)-1) {
return "Position(" + strconv.FormatInt(int64(i), 10) + ")"
}
return _Position_name[_Position_index[i]:_Position_index[i+1]]
}

112
freefloating/string.go Normal file
View File

@ -0,0 +1,112 @@
package freefloating
import "github.com/z7zmey/php-parser/position"
type StringType int
const (
WhiteSpaceType StringType = iota
CommentType
TokenType
)
type Position int
//go:generate stringer -type=Position -output ./position_string.go
const (
Start Position = iota
End
Slash
Colon
SemiColon
AltEnd
Dollar
Ampersand
Name
Prefix
Key
Var
UseType
ReturnType
OptionalType
CaseSeparator
LexicalVars
Params
Ref
Cast
Expr
InitExpr
CondExpr
IncExpr
True
Cond
HaltCompiller
Namespace
Static
Class
Use
While
For
Switch
Break
Foreach
Declare
Label
Finally
List
Default
If
ElseIf
Else
Variadic
Function
Alias
As
Equal
Exit
Array
Isset
Empty
Eval
Echo
Try
Catch
Unset
Stmts
VarList
ConstList
NameList
ParamList
ModifierList
ArrayPairList
CaseListStart
CaseListEnd
ArgumentList
PropertyList
ParameterList
AdaptationList
LexicalVarList
UseDeclarationList
OpenParenthesisToken
CloseParenthesisToken
)
type String struct {
StringType StringType
Value string
Position *position.Position
}
type Collection map[Position][]String
func (c Collection) IsEmpty() bool {
for _, v := range c {
if len(v) > 0 {
return false
}
}
return true
}

View File

@ -1,168 +0,0 @@
package meta
// Collection of Meta objects
type Collection []*Data
// SetTokenName sets TokenName for the all elements in the collection
func (mc *Collection) SetTokenName(tn TokenName) *Collection {
for _, m := range *mc {
m.TokenName = tn
}
return mc
}
// Push adds elements to the end of an Collection
func (mc *Collection) Push(mm ...*Data) *Collection {
*mc = append(*mc, mm...)
return mc
}
// Unshift prepends elements to the beginning of an Collection
func (mc *Collection) Unshift(mm ...*Data) *Collection {
*mc = append(mm, *mc...)
return mc
}
// AppendTo - appends elements of the collection to the end of the target collection
func (mc *Collection) AppendTo(target *Collection) *Collection {
if len(*mc) == 0 {
return mc
}
*target = append(*target, *mc...)
return mc
}
// PrependTo - prepends elements of the collection to the start of the target collection
func (mc *Collection) PrependTo(target *Collection) *Collection {
if len(*mc) == 0 {
return mc
}
*target = append(*mc, *target...)
return mc
}
// Cut elements by TokenName
func (mc *Collection) Cut(f Filter) *Collection {
collection := (*mc)[:0]
cutted := Collection{}
for _, m := range *mc {
if fr := f(m); fr {
cutted = append(cutted, m)
} else {
collection = append(collection, m)
}
}
*mc = collection
return &cutted
}
// FindBy filter
func (mc *Collection) FindBy(f Filter) Collection {
found := Collection{}
for _, m := range *mc {
if fr := f(m); fr {
found = append(found, m)
}
}
return found
}
// Filter function signature
type Filter func(d *Data) bool
// TokenNameFilter generates filter function that returns true
// if data.TokenName has in the arguments list
func TokenNameFilter(tokenNames ...TokenName) Filter {
return func(d *Data) bool {
for _, tn := range tokenNames {
if d.TokenName == tn {
return true
}
}
return false
}
}
// TypeFilter generates filter function that returns true
// if data.Type has in the arguments list
func TypeFilter(types ...Type) Filter {
return func(d *Data) bool {
for _, t := range types {
if d.Type == t {
return true
}
}
return false
}
}
// ValueFilter generates filter function that returns true
// if data.Value has in the arguments list
func ValueFilter(values ...string) Filter {
return func(d *Data) bool {
for _, v := range values {
if d.Value == v {
return true
}
}
return false
}
}
// AndFilter generates filter function that returns true
// if all given filters return true
func AndFilter(filters ...Filter) Filter {
return func(d *Data) bool {
for _, filter := range filters {
if result := filter(d); !result {
return false
}
}
return true
}
}
// OrFilter generates filter function that returns true
// if one of given filters return true
func OrFilter(filters ...Filter) Filter {
return func(d *Data) bool {
for _, filter := range filters {
if result := filter(d); result {
return true
}
}
return false
}
}
// NotFilter negates given filter
func NotFilter(f Filter) Filter {
return func(d *Data) bool {
return !f(d)
}
}
// StopOnFailureFilter always returns false after first failure
func StopOnFailureFilter(f Filter) Filter {
stopFlag := false
return func(d *Data) bool {
if stopFlag == true {
return false
}
if !f(d) {
stopFlag = true
return false
}
return true
}
}

View File

@ -1,648 +0,0 @@
package meta_test
import (
"reflect"
"testing"
"github.com/kylelemons/godebug/pretty"
"github.com/z7zmey/php-parser/meta"
)
func TestCollectionSetTokenName(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
comment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
}
baseCollection := meta.Collection{whiteSpace, comment}
// action
baseCollection.SetTokenName(meta.OpenParenthesisToken)
// check
for _, m := range baseCollection {
if m.TokenName != meta.OpenParenthesisToken {
t.Error("The TokenName must be set for all Meta objects")
}
}
}
func TestCollectionPush(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
comment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
}
actualCollection := meta.Collection{whiteSpace}
expectedCollection := meta.Collection{whiteSpace, comment}
// action
actualCollection.Push(comment)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
}
func TestCollectionUnshift(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
comment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
}
actualCollection := meta.Collection{comment}
expectedCollection := meta.Collection{whiteSpace, comment}
// action
actualCollection.Unshift(whiteSpace)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
}
func TestCollectionAppendTo(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
comment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
}
actualCollection := meta.Collection{whiteSpace}
expectedCollection := meta.Collection{whiteSpace, comment}
baseCollection := meta.Collection{comment}
// action
baseCollection.AppendTo(&actualCollection)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
}
func TestEmptyCollectionAppendTo(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
actualCollection := meta.Collection{whiteSpace}
expectedCollection := meta.Collection{whiteSpace}
var baseCollection meta.Collection = nil
// action
baseCollection.AppendTo(&actualCollection)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
}
func TestCollectionPrependTo(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
comment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
}
actualCollection := meta.Collection{comment}
expectedCollection := meta.Collection{whiteSpace, comment}
baseCollection := meta.Collection{whiteSpace}
// action
baseCollection.PrependTo(&actualCollection)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
}
func TestEmptyCollectionPrependTo(t *testing.T) {
// prepare
comment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
}
actualCollection := meta.Collection{comment}
expectedCollection := meta.Collection{comment}
baseCollection := meta.Collection{}
// action
baseCollection.PrependTo(&actualCollection)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
}
func TestCollectionCutByTokenName(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
OpenParenthesisComment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
TokenName: meta.OpenParenthesisToken,
}
OpenParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: "(",
TokenName: meta.OpenParenthesisToken,
}
CloseParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: ")",
TokenName: meta.CloseParenthesisToken,
}
actualCollection := meta.Collection{whiteSpace, OpenParenthesisComment, OpenParenthesisToken, CloseParenthesisToken}
expectedCollection := meta.Collection{whiteSpace, CloseParenthesisToken}
expectedCutCollection := &meta.Collection{OpenParenthesisComment, OpenParenthesisToken}
// action
actualCutCollection := actualCollection.Cut(
meta.TokenNameFilter(meta.OpenParenthesisToken),
)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) {
diff := pretty.Compare(expectedCutCollection, actualCutCollection)
if diff != "" {
t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual Cut collections are not equal\n")
}
}
}
func TestCollectionCutByTokenTypes(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
OpenParenthesisComment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
TokenName: meta.OpenParenthesisToken,
}
OpenParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: "(",
TokenName: meta.OpenParenthesisToken,
}
CloseParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: ")",
TokenName: meta.CloseParenthesisToken,
}
actualCollection := meta.Collection{whiteSpace, OpenParenthesisComment, OpenParenthesisToken, CloseParenthesisToken}
expectedCollection := meta.Collection{OpenParenthesisToken, CloseParenthesisToken}
expectedCutCollection := &meta.Collection{whiteSpace, OpenParenthesisComment}
// action
actualCutCollection := actualCollection.Cut(meta.OrFilter(
meta.TypeFilter(meta.CommentType),
meta.TypeFilter(meta.WhiteSpaceType)),
)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) {
diff := pretty.Compare(expectedCutCollection, actualCutCollection)
if diff != "" {
t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual Cut collections are not equal\n")
}
}
}
func TestCollectionCutByTokenNameButNotType(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
OpenParenthesisComment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
TokenName: meta.OpenParenthesisToken,
}
OpenParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: "(",
TokenName: meta.OpenParenthesisToken,
}
CloseParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: ")",
TokenName: meta.CloseParenthesisToken,
}
actualCollection := meta.Collection{
whiteSpace,
OpenParenthesisComment,
OpenParenthesisToken,
CloseParenthesisToken,
}
expectedCollection := meta.Collection{
whiteSpace,
OpenParenthesisToken,
CloseParenthesisToken,
}
expectedCutCollection := &meta.Collection{
OpenParenthesisComment,
}
// action
actualCutCollection := actualCollection.Cut(meta.AndFilter(
meta.TokenNameFilter(meta.OpenParenthesisToken),
meta.NotFilter(meta.TypeFilter(meta.TokenType))),
)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) {
diff := pretty.Compare(expectedCutCollection, actualCutCollection)
if diff != "" {
t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual Cut collections are not equal\n")
}
}
}
func TestCollectionCutByValue(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
}
OpenParenthesisComment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
TokenName: meta.OpenParenthesisToken,
}
OpenParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: "(",
TokenName: meta.OpenParenthesisToken,
}
CloseParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: ")",
TokenName: meta.CloseParenthesisToken,
}
actualCollection := meta.Collection{
whiteSpace,
OpenParenthesisComment,
OpenParenthesisToken,
CloseParenthesisToken,
}
expectedCollection := meta.Collection{
whiteSpace,
OpenParenthesisComment,
}
expectedCutCollection := &meta.Collection{
OpenParenthesisToken,
CloseParenthesisToken,
}
// action
actualCutCollection := actualCollection.Cut(meta.ValueFilter("(", ")"))
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) {
diff := pretty.Compare(expectedCutCollection, actualCutCollection)
if diff != "" {
t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual Cut collections are not equal\n")
}
}
}
func TestCollectionCutUntilFirstToken(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
TokenName: meta.NodeStart,
}
OpenParenthesisComment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
TokenName: meta.NodeStart,
}
OpenParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: "(",
TokenName: meta.OpenParenthesisToken,
}
CloseParenthesisComment := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "// some comment",
TokenName: meta.OpenParenthesisToken,
}
CloseParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: ")",
TokenName: meta.CloseParenthesisToken,
}
actualCollection := meta.Collection{
whiteSpace,
OpenParenthesisComment,
OpenParenthesisToken,
CloseParenthesisComment,
CloseParenthesisToken,
}
expectedCutCollection := &meta.Collection{
whiteSpace,
OpenParenthesisComment,
}
expectedCollection := meta.Collection{
OpenParenthesisToken,
CloseParenthesisComment, // must not be cut
CloseParenthesisToken,
}
// action
actualCutCollection := actualCollection.Cut(
meta.StopOnFailureFilter(
meta.NotFilter(
meta.TypeFilter(meta.TokenType),
),
),
)
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) {
diff := pretty.Compare(expectedCutCollection, actualCutCollection)
if diff != "" {
t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual Cut collections are not equal\n")
}
}
}
func TestCollectionFindByType(t *testing.T) {
// prepare
whiteSpace := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "\n",
TokenName: meta.NodeStart,
}
OpenParenthesisComment := &meta.Data{
Type: meta.CommentType,
Value: "// some comment",
TokenName: meta.NodeStart,
}
OpenParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: "(",
TokenName: meta.OpenParenthesisToken,
}
CloseParenthesisComment := &meta.Data{
Type: meta.WhiteSpaceType,
Value: "// some comment",
TokenName: meta.OpenParenthesisToken,
}
CloseParenthesisToken := &meta.Data{
Type: meta.TokenType,
Value: ")",
TokenName: meta.CloseParenthesisToken,
}
actualCollection := meta.Collection{
whiteSpace,
OpenParenthesisComment,
OpenParenthesisToken,
CloseParenthesisComment,
CloseParenthesisToken,
}
expectedCollection := meta.Collection{
whiteSpace,
OpenParenthesisComment,
OpenParenthesisToken,
CloseParenthesisComment,
CloseParenthesisToken,
}
expectedFoundCollection := meta.Collection{
OpenParenthesisToken,
CloseParenthesisToken,
}
// action
actualFoundCollection := actualCollection.FindBy(meta.TypeFilter(meta.TokenType))
// check
if !reflect.DeepEqual(expectedCollection, actualCollection) {
diff := pretty.Compare(expectedCollection, actualCollection)
if diff != "" {
t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual collections are not equal\n")
}
}
if !reflect.DeepEqual(expectedFoundCollection, actualFoundCollection) {
diff := pretty.Compare(expectedFoundCollection, actualFoundCollection)
if diff != "" {
t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual Cut collections are not equal\n")
}
}
}

View File

@ -1,17 +0,0 @@
package meta
import (
"github.com/z7zmey/php-parser/position"
)
// Data contain additional information that isn't part of AST
type Data struct {
Value string
Type Type
Position *position.Position
TokenName TokenName
}
func (d *Data) String() string {
return d.Value
}

View File

@ -1,21 +0,0 @@
package meta_test
import (
"testing"
"github.com/z7zmey/php-parser/meta"
)
func TestCommentPrint(t *testing.T) {
expected := "/** hello world */"
comment := meta.Data{
Value: expected,
}
actual := comment.String()
if expected != actual {
t.Errorf("expected and actual are not equal\n")
}
}

View File

@ -1,85 +0,0 @@
package meta
// TokenName is used to specify a comment position
type TokenName int
//go:generate stringer -type=TokenName -output ./tokenName_string.go
const (
NodeStart TokenName = iota
NodeEnd
WhileToken
EndwhileToken
ForInitSemicolonToken
ForCondSemicolonToken
EndforToken
EndforeachToken
EnddeclareToken
AsToken
EndswitchToken
FunctionToken
ConstToken
InsteadofToken
ClassToken
ExtendsToken
ImplementsToken
DoubleArrowToken
PaamayimNekudotayimToken
NsSeparatorToken
EllipsisToken
LogicalOrToken
LogicalXorToken
LogicalAndToken
InstanceofToken
EndifToken
IncToken
DecToken
ObjectOperatorToken
CoalesceToken
SpaceshipToken
PlusEqualToken
MinusEqualToken
MulEqualToken
PowEqualToken
DivEqualToken
ConcatEqualToken
ModEqualToken
AndEqualToken
OrEqualToken
XorEqualToken
SlEqualToken
SrEqualToken
BooleanOrToken
BooleanAndToken
PowToken
SlToken
SrToken
IsIdenticalToken
IsNotIdenticalToken
IsEqualToken
IsNotEqualToken
IsSmallerOrEqualToken
IsGreaterOrEqualToken
CaseSeparatorToken // ';' or ':'
OpenCurlyBracesToken // '{'
CloseCurlyBracesToken // '}'
SemiColonToken // ';'
ColonToken // ':'
OpenParenthesisToken // '('
CloseParenthesisToken // ')'
OpenSquareBracket // '['
CloseSquareBracket // ']'
QuestionMarkToken // '?'
AmpersandToken // '&'
MinusToken // '-'
PlusToken // '+'
CommaToken // ','
VerticalBarToken // '|'
EqualToken // '='
CaretToken // '^'
AsteriskToken // '*'
SlashToken // '/'
PercentToken // '%'
LessToken // '<'
GreaterToken // '>'
DotToken // '.'
)

View File

@ -1,16 +0,0 @@
// Code generated by "stringer -type=TokenName -output ./tokenName_string.go"; DO NOT EDIT.
package meta
import "strconv"
const _TokenName_name = "NodeStartNodeEndWhileTokenEndwhileTokenForInitSemicolonTokenForCondSemicolonTokenEndforTokenEndforeachTokenEnddeclareTokenAsTokenEndswitchTokenFunctionTokenConstTokenInsteadofTokenClassTokenExtendsTokenImplementsTokenDoubleArrowTokenPaamayimNekudotayimTokenNsSeparatorTokenEllipsisTokenLogicalOrTokenLogicalXorTokenLogicalAndTokenInstanceofTokenEndifTokenIncTokenDecTokenObjectOperatorTokenCoalesceTokenSpaceshipTokenPlusEqualTokenMinusEqualTokenMulEqualTokenPowEqualTokenDivEqualTokenConcatEqualTokenModEqualTokenAndEqualTokenOrEqualTokenXorEqualTokenSlEqualTokenSrEqualTokenBooleanOrTokenBooleanAndTokenPowTokenSlTokenSrTokenIsIdenticalTokenIsNotIdenticalTokenIsEqualTokenIsNotEqualTokenIsSmallerOrEqualTokenIsGreaterOrEqualTokenCaseSeparatorTokenOpenCurlyBracesTokenCloseCurlyBracesTokenSemiColonTokenColonTokenOpenParenthesisTokenCloseParenthesisTokenOpenSquareBracketCloseSquareBracketQuestionMarkTokenAmpersandTokenMinusTokenPlusTokenCommaTokenVerticalBarTokenEqualTokenCaretTokenAsteriskTokenSlashTokenPercentTokenLessTokenGreaterTokenDotToken"
var _TokenName_index = [...]uint16{0, 9, 16, 26, 39, 60, 81, 92, 107, 122, 129, 143, 156, 166, 180, 190, 202, 217, 233, 257, 273, 286, 300, 315, 330, 345, 355, 363, 371, 390, 403, 417, 431, 446, 459, 472, 485, 501, 514, 527, 539, 552, 564, 576, 590, 605, 613, 620, 627, 643, 662, 674, 689, 710, 731, 749, 769, 790, 804, 814, 834, 855, 872, 890, 907, 921, 931, 940, 950, 966, 976, 986, 999, 1009, 1021, 1030, 1042, 1050}
func (i TokenName) String() string {
if i < 0 || i >= TokenName(len(_TokenName_index)-1) {
return "TokenName(" + strconv.FormatInt(int64(i), 10) + ")"
}
return _TokenName_name[_TokenName_index[i]:_TokenName_index[i+1]]
}

View File

@ -1,29 +0,0 @@
package meta_test
import (
"testing"
"github.com/z7zmey/php-parser/meta"
)
func TestTokenNameString(t *testing.T) {
c := meta.NsSeparatorToken
expected := "NsSeparatorToken"
actual := c.String()
if expected != actual {
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
}
}
func TestWrongTokenNameString(t *testing.T) {
c := meta.TokenName(-1)
expected := "TokenName(-1)"
actual := c.String()
if expected != actual {
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
}
}

View File

@ -1,11 +0,0 @@
package meta
// Type TODO
type Type int
//go:generate stringer -type=Type -output ./type_string.go
const (
CommentType Type = iota
WhiteSpaceType
TokenType
)

View File

@ -1,16 +0,0 @@
// Code generated by "stringer -type=Type -output ./type_string.go"; DO NOT EDIT.
package meta
import "strconv"
const _Type_name = "CommentTypeWhiteSpaceTypeTokenType"
var _Type_index = [...]uint8{0, 11, 25, 34}
func (i Type) String() string {
if i < 0 || i >= Type(len(_Type_index)-1) {
return "Type(" + strconv.FormatInt(int64(i), 10) + ")"
}
return _Type_name[_Type_index[i]:_Type_index[i+1]]
}

View File

@ -1,29 +0,0 @@
package meta_test
import (
"testing"
"github.com/z7zmey/php-parser/meta"
)
func TestTypeString(t *testing.T) {
c := meta.CommentType
expected := "CommentType"
actual := c.String()
if expected != actual {
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
}
}
func TestWrongTypeString(t *testing.T) {
c := meta.Type(-1)
expected := "Type(-1)"
actual := c.String()
if expected != actual {
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
}
}

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Assign node // Assign node
type Assign struct { type Assign struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewAssign node constructor // NewAssign node constructor
func NewAssign(Variable node.Node, Expression node.Node) *Assign { func NewAssign(Variable node.Node, Expression node.Node) *Assign {
return &Assign{ return &Assign{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Assign) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Assign) GetMeta() *meta.Collection { func (n *Assign) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Reference node // Reference node
type Reference struct { type Reference struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewReference node constructor // NewReference node constructor
func NewReference(Variable node.Node, Expression node.Node) *Reference { func NewReference(Variable node.Node, Expression node.Node) *Reference {
return &Reference{ return &Reference{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Reference) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Reference) GetMeta() *meta.Collection { func (n *Reference) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// BitwiseAnd node // BitwiseAnd node
type BitwiseAnd struct { type BitwiseAnd struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewBitwiseAnd node constructor // NewBitwiseAnd node constructor
func NewBitwiseAnd(Variable node.Node, Expression node.Node) *BitwiseAnd { func NewBitwiseAnd(Variable node.Node, Expression node.Node) *BitwiseAnd {
return &BitwiseAnd{ return &BitwiseAnd{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *BitwiseAnd) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseAnd) GetMeta() *meta.Collection { func (n *BitwiseAnd) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// BitwiseOr node // BitwiseOr node
type BitwiseOr struct { type BitwiseOr struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewBitwiseOr node constructor // NewBitwiseOr node constructor
func NewBitwiseOr(Variable node.Node, Expression node.Node) *BitwiseOr { func NewBitwiseOr(Variable node.Node, Expression node.Node) *BitwiseOr {
return &BitwiseOr{ return &BitwiseOr{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *BitwiseOr) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseOr) GetMeta() *meta.Collection { func (n *BitwiseOr) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// BitwiseXor node // BitwiseXor node
type BitwiseXor struct { type BitwiseXor struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewBitwiseXor node constructor // NewBitwiseXor node constructor
func NewBitwiseXor(Variable node.Node, Expression node.Node) *BitwiseXor { func NewBitwiseXor(Variable node.Node, Expression node.Node) *BitwiseXor {
return &BitwiseXor{ return &BitwiseXor{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *BitwiseXor) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseXor) GetMeta() *meta.Collection { func (n *BitwiseXor) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Concat node // Concat node
type Concat struct { type Concat struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewConcat node constructor // NewConcat node constructor
func NewConcat(Variable node.Node, Expression node.Node) *Concat { func NewConcat(Variable node.Node, Expression node.Node) *Concat {
return &Concat{ return &Concat{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Concat) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Concat) GetMeta() *meta.Collection { func (n *Concat) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Div node // Div node
type Div struct { type Div struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewDiv node constructor // NewDiv node constructor
func NewDiv(Variable node.Node, Expression node.Node) *Div { func NewDiv(Variable node.Node, Expression node.Node) *Div {
return &Div{ return &Div{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Div) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Div) GetMeta() *meta.Collection { func (n *Div) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Minus node // Minus node
type Minus struct { type Minus struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewMinus node constructor // NewMinus node constructor
func NewMinus(Variable node.Node, Expression node.Node) *Minus { func NewMinus(Variable node.Node, Expression node.Node) *Minus {
return &Minus{ return &Minus{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Minus) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Minus) GetMeta() *meta.Collection { func (n *Minus) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Mod node // Mod node
type Mod struct { type Mod struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewMod node constructor // NewMod node constructor
func NewMod(Variable node.Node, Expression node.Node) *Mod { func NewMod(Variable node.Node, Expression node.Node) *Mod {
return &Mod{ return &Mod{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Mod) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Mod) GetMeta() *meta.Collection { func (n *Mod) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Mul node // Mul node
type Mul struct { type Mul struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewMul node constructor // NewMul node constructor
func NewMul(Variable node.Node, Expression node.Node) *Mul { func NewMul(Variable node.Node, Expression node.Node) *Mul {
return &Mul{ return &Mul{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Mul) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Mul) GetMeta() *meta.Collection { func (n *Mul) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Plus node // Plus node
type Plus struct { type Plus struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewPlus node constructor // NewPlus node constructor
func NewPlus(Variable node.Node, Expression node.Node) *Plus { func NewPlus(Variable node.Node, Expression node.Node) *Plus {
return &Plus{ return &Plus{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Plus) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Plus) GetMeta() *meta.Collection { func (n *Plus) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Pow node // Pow node
type Pow struct { type Pow struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewPow node constructor // NewPow node constructor
func NewPow(Variable node.Node, Expression node.Node) *Pow { func NewPow(Variable node.Node, Expression node.Node) *Pow {
return &Pow{ return &Pow{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Pow) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Pow) GetMeta() *meta.Collection { func (n *Pow) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// ShiftLeft node // ShiftLeft node
type ShiftLeft struct { type ShiftLeft struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewShiftLeft node constructor // NewShiftLeft node constructor
func NewShiftLeft(Variable node.Node, Expression node.Node) *ShiftLeft { func NewShiftLeft(Variable node.Node, Expression node.Node) *ShiftLeft {
return &ShiftLeft{ return &ShiftLeft{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *ShiftLeft) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShiftLeft) GetMeta() *meta.Collection { func (n *ShiftLeft) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package assign package assign
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// ShiftRight node // ShiftRight node
type ShiftRight struct { type ShiftRight struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
} }
// NewShiftRight node constructor // NewShiftRight node constructor
func NewShiftRight(Variable node.Node, Expression node.Node) *ShiftRight { func NewShiftRight(Variable node.Node, Expression node.Node) *ShiftRight {
return &ShiftRight{ return &ShiftRight{
Variable: Variable, FreeFloating: nil,
Expression: Expression, Variable: Variable,
Expression: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *ShiftRight) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShiftRight) GetMeta() *meta.Collection { func (n *ShiftRight) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -2,14 +2,13 @@ package assign_test
import ( import (
"bytes" "bytes"
"reflect"
"testing" "testing"
"gotest.tools/assert"
"github.com/z7zmey/php-parser/node/expr/assign" "github.com/z7zmey/php-parser/node/expr/assign"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/kylelemons/godebug/pretty"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr"
"github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/node/name"
@ -18,18 +17,6 @@ import (
"github.com/z7zmey/php-parser/php7" "github.com/z7zmey/php-parser/php7"
) )
func assertEqual(t *testing.T, expected interface{}, actual interface{}) {
if !reflect.DeepEqual(expected, actual) {
diff := pretty.Compare(expected, actual)
if diff != "" {
t.Errorf("diff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("expected and actual are not equal\n")
}
}
}
func TestReference(t *testing.T) { func TestReference(t *testing.T) {
src := `<? $a =& $b;` src := `<? $a =& $b;`
@ -97,12 +84,12 @@ func TestReference(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestReferenceNew(t *testing.T) { func TestReferenceNew(t *testing.T) {
@ -182,12 +169,12 @@ func TestReferenceNew(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestReferenceArgs(t *testing.T) { func TestReferenceArgs(t *testing.T) {
@ -304,12 +291,12 @@ func TestReferenceArgs(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestAssign(t *testing.T) { func TestAssign(t *testing.T) {
@ -379,12 +366,12 @@ func TestAssign(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBitwiseAnd(t *testing.T) { func TestBitwiseAnd(t *testing.T) {
@ -454,12 +441,12 @@ func TestBitwiseAnd(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBitwiseOr(t *testing.T) { func TestBitwiseOr(t *testing.T) {
@ -529,12 +516,12 @@ func TestBitwiseOr(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBitwiseXor(t *testing.T) { func TestBitwiseXor(t *testing.T) {
@ -604,12 +591,12 @@ func TestBitwiseXor(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestConcat(t *testing.T) { func TestConcat(t *testing.T) {
@ -679,12 +666,12 @@ func TestConcat(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestDiv(t *testing.T) { func TestDiv(t *testing.T) {
@ -754,12 +741,12 @@ func TestDiv(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestMinus(t *testing.T) { func TestMinus(t *testing.T) {
@ -829,12 +816,12 @@ func TestMinus(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestMod(t *testing.T) { func TestMod(t *testing.T) {
@ -904,12 +891,12 @@ func TestMod(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestMul(t *testing.T) { func TestMul(t *testing.T) {
@ -979,12 +966,12 @@ func TestMul(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestPlus(t *testing.T) { func TestPlus(t *testing.T) {
@ -1054,12 +1041,12 @@ func TestPlus(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestPow(t *testing.T) { func TestPow(t *testing.T) {
@ -1129,12 +1116,12 @@ func TestPow(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestShiftLeft(t *testing.T) { func TestShiftLeft(t *testing.T) {
@ -1204,12 +1191,12 @@ func TestShiftLeft(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestShiftRight(t *testing.T) { func TestShiftRight(t *testing.T) {
@ -1279,10 +1266,10 @@ func TestShiftRight(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }

View File

@ -0,0 +1,81 @@
package assign_test
import (
"testing"
"gotest.tools/assert"
"github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr/assign"
)
var expected freefloating.Collection = freefloating.Collection{
freefloating.Start: []freefloating.String{
{
StringType: freefloating.WhiteSpaceType,
Value: " ",
Position: nil,
},
{
StringType: freefloating.CommentType,
Value: "//comment\n",
Position: nil,
},
},
}
var nodes = []node.Node{
&assign.Reference{
FreeFloating: expected,
},
&assign.Assign{
FreeFloating: expected,
},
&assign.BitwiseAnd{
FreeFloating: expected,
},
&assign.BitwiseOr{
FreeFloating: expected,
},
&assign.BitwiseXor{
FreeFloating: expected,
},
&assign.Concat{
FreeFloating: expected,
},
&assign.Div{
FreeFloating: expected,
},
&assign.Minus{
FreeFloating: expected,
},
&assign.Mod{
FreeFloating: expected,
},
&assign.Mul{
FreeFloating: expected,
},
&assign.Plus{
FreeFloating: expected,
},
&assign.Pow{
FreeFloating: expected,
},
&assign.ShiftLeft{
FreeFloating: expected,
},
&assign.ShiftRight{
FreeFloating: expected,
},
&assign.ShiftRight{
FreeFloating: expected,
},
}
func TestMeta(t *testing.T) {
for _, n := range nodes {
actual := *n.GetFreeFloating()
assert.DeepEqual(t, expected, actual)
}
}

View File

@ -1,49 +0,0 @@
package assign_test
import (
"testing"
"github.com/z7zmey/php-parser/node/expr/assign"
"github.com/z7zmey/php-parser/meta"
"github.com/z7zmey/php-parser/node"
)
var nodes = []node.Node{
&assign.Reference{},
&assign.Assign{},
&assign.BitwiseAnd{},
&assign.BitwiseOr{},
&assign.BitwiseXor{},
&assign.Concat{},
&assign.Div{},
&assign.Minus{},
&assign.Mod{},
&assign.Mul{},
&assign.Plus{},
&assign.Pow{},
&assign.ShiftLeft{},
&assign.ShiftRight{},
&assign.ShiftRight{},
}
func TestMeta(t *testing.T) {
expected := &meta.Collection{
&meta.Data{
Value: "//comment\n",
Type: meta.CommentType,
Position: nil,
},
&meta.Data{
Value: " ",
Type: meta.WhiteSpaceType,
Position: nil,
},
}
for _, n := range nodes {
n.GetMeta().Push(*expected...)
actual := n.GetMeta()
assertEqual(t, expected, actual)
}
}

View File

@ -3,6 +3,8 @@ package assign_test
import ( import (
"testing" "testing"
"gotest.tools/assert"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
) )
@ -11,6 +13,6 @@ func TestPosition(t *testing.T) {
for _, n := range nodes { for _, n := range nodes {
n.SetPosition(expected) n.SetPosition(expected)
actual := n.GetPosition() actual := n.GetPosition()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
} }

View File

@ -1,15 +1,13 @@
package assign_test package assign_test
import ( import (
"reflect"
"testing" "testing"
"github.com/z7zmey/php-parser/node/expr/assign" "gotest.tools/assert"
"github.com/kylelemons/godebug/pretty"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr"
"github.com/z7zmey/php-parser/node/expr/assign"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
) )
@ -24,7 +22,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.Assign{ &assign.Assign{
@ -32,7 +30,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.BitwiseAnd{ &assign.BitwiseAnd{
@ -40,7 +38,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.BitwiseOr{ &assign.BitwiseOr{
@ -48,7 +46,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.BitwiseXor{ &assign.BitwiseXor{
@ -56,7 +54,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.Concat{ &assign.Concat{
@ -64,7 +62,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.Div{ &assign.Div{
@ -72,7 +70,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.Minus{ &assign.Minus{
@ -80,7 +78,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.Mod{ &assign.Mod{
@ -88,7 +86,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.Mul{ &assign.Mul{
@ -96,7 +94,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.Plus{ &assign.Plus{
@ -104,7 +102,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.Pow{ &assign.Pow{
@ -112,7 +110,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.ShiftLeft{ &assign.ShiftLeft{
@ -120,7 +118,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
{ {
&assign.ShiftRight{ &assign.ShiftRight{
@ -128,7 +126,7 @@ var nodesToTest = []struct {
Expression: &expr.Variable{}, Expression: &expr.Variable{},
}, },
[]string{"Variable", "Expression"}, []string{"Variable", "Expression"},
map[string]interface{}{}, nil,
}, },
} }
@ -150,31 +148,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {}
func TestVisitorDisableChildren(t *testing.T) { func TestVisitorDisableChildren(t *testing.T) {
for _, tt := range nodesToTest { for _, tt := range nodesToTest {
v := &visitorMock{false, nil} v := &visitorMock{false, []string{}}
tt.node.Walk(v) tt.node.Walk(v)
expected := []string{} expected := []string{}
actual := v.visitedKeys actual := v.visitedKeys
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }
func TestVisitor(t *testing.T) { func TestVisitor(t *testing.T) {
for _, tt := range nodesToTest { for _, tt := range nodesToTest {
v := &visitorMock{true, nil} v := &visitorMock{true, []string{}}
tt.node.Walk(v) tt.node.Walk(v)
expected := tt.expectedVisitedKeys expected := tt.expectedVisitedKeys
actual := v.visitedKeys actual := v.visitedKeys
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }
@ -185,9 +177,6 @@ func TestNameAttributes(t *testing.T) {
expected := tt.expectedAttributes expected := tt.expectedAttributes
actual := tt.node.Attributes() actual := tt.node.Attributes()
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// BitwiseAnd node // BitwiseAnd node
type BitwiseAnd struct { type BitwiseAnd struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewBitwiseAnd node constructor // NewBitwiseAnd node constructor
func NewBitwiseAnd(Variable node.Node, Expression node.Node) *BitwiseAnd { func NewBitwiseAnd(Variable node.Node, Expression node.Node) *BitwiseAnd {
return &BitwiseAnd{ return &BitwiseAnd{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *BitwiseAnd) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseAnd) GetMeta() *meta.Collection { func (n *BitwiseAnd) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// BitwiseOr node // BitwiseOr node
type BitwiseOr struct { type BitwiseOr struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewBitwiseOr node constructor // NewBitwiseOr node constructor
func NewBitwiseOr(Variable node.Node, Expression node.Node) *BitwiseOr { func NewBitwiseOr(Variable node.Node, Expression node.Node) *BitwiseOr {
return &BitwiseOr{ return &BitwiseOr{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *BitwiseOr) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseOr) GetMeta() *meta.Collection { func (n *BitwiseOr) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// BitwiseXor node // BitwiseXor node
type BitwiseXor struct { type BitwiseXor struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewBitwiseXor node constructor // NewBitwiseXor node constructor
func NewBitwiseXor(Variable node.Node, Expression node.Node) *BitwiseXor { func NewBitwiseXor(Variable node.Node, Expression node.Node) *BitwiseXor {
return &BitwiseXor{ return &BitwiseXor{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *BitwiseXor) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseXor) GetMeta() *meta.Collection { func (n *BitwiseXor) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// BooleanAnd node // BooleanAnd node
type BooleanAnd struct { type BooleanAnd struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewBooleanAnd node constructor // NewBooleanAnd node constructor
func NewBooleanAnd(Variable node.Node, Expression node.Node) *BooleanAnd { func NewBooleanAnd(Variable node.Node, Expression node.Node) *BooleanAnd {
return &BooleanAnd{ return &BooleanAnd{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *BooleanAnd) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BooleanAnd) GetMeta() *meta.Collection { func (n *BooleanAnd) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// BooleanOr node // BooleanOr node
type BooleanOr struct { type BooleanOr struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewBooleanOr node constructor // NewBooleanOr node constructor
func NewBooleanOr(Variable node.Node, Expression node.Node) *BooleanOr { func NewBooleanOr(Variable node.Node, Expression node.Node) *BooleanOr {
return &BooleanOr{ return &BooleanOr{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *BooleanOr) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BooleanOr) GetMeta() *meta.Collection { func (n *BooleanOr) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Coalesce node // Coalesce node
type Coalesce struct { type Coalesce struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewCoalesce node constructor // NewCoalesce node constructor
func NewCoalesce(Variable node.Node, Expression node.Node) *Coalesce { func NewCoalesce(Variable node.Node, Expression node.Node) *Coalesce {
return &Coalesce{ return &Coalesce{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Coalesce) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Coalesce) GetMeta() *meta.Collection { func (n *Coalesce) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Concat node // Concat node
type Concat struct { type Concat struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewConcat node constructor // NewConcat node constructor
func NewConcat(Variable node.Node, Expression node.Node) *Concat { func NewConcat(Variable node.Node, Expression node.Node) *Concat {
return &Concat{ return &Concat{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Concat) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Concat) GetMeta() *meta.Collection { func (n *Concat) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Div node // Div node
type Div struct { type Div struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewDiv node constructor // NewDiv node constructor
func NewDiv(Variable node.Node, Expression node.Node) *Div { func NewDiv(Variable node.Node, Expression node.Node) *Div {
return &Div{ return &Div{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Div) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Div) GetMeta() *meta.Collection { func (n *Div) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Equal node // Equal node
type Equal struct { type Equal struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewEqual node constructor // NewEqual node constructor
func NewEqual(Variable node.Node, Expression node.Node) *Equal { func NewEqual(Variable node.Node, Expression node.Node) *Equal {
return &Equal{ return &Equal{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Equal) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Equal) GetMeta() *meta.Collection { func (n *Equal) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Greater node // Greater node
type Greater struct { type Greater struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewGreater node constructor // NewGreater node constructor
func NewGreater(Variable node.Node, Expression node.Node) *Greater { func NewGreater(Variable node.Node, Expression node.Node) *Greater {
return &Greater{ return &Greater{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Greater) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Greater) GetMeta() *meta.Collection { func (n *Greater) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// GreaterOrEqual node // GreaterOrEqual node
type GreaterOrEqual struct { type GreaterOrEqual struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewGreaterOrEqual node constructor // NewGreaterOrEqual node constructor
func NewGreaterOrEqual(Variable node.Node, Expression node.Node) *GreaterOrEqual { func NewGreaterOrEqual(Variable node.Node, Expression node.Node) *GreaterOrEqual {
return &GreaterOrEqual{ return &GreaterOrEqual{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *GreaterOrEqual) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *GreaterOrEqual) GetMeta() *meta.Collection { func (n *GreaterOrEqual) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Identical node // Identical node
type Identical struct { type Identical struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewIdentical node constructor // NewIdentical node constructor
func NewIdentical(Variable node.Node, Expression node.Node) *Identical { func NewIdentical(Variable node.Node, Expression node.Node) *Identical {
return &Identical{ return &Identical{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Identical) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Identical) GetMeta() *meta.Collection { func (n *Identical) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// LogicalAnd node // LogicalAnd node
type LogicalAnd struct { type LogicalAnd struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewLogicalAnd node constructor // NewLogicalAnd node constructor
func NewLogicalAnd(Variable node.Node, Expression node.Node) *LogicalAnd { func NewLogicalAnd(Variable node.Node, Expression node.Node) *LogicalAnd {
return &LogicalAnd{ return &LogicalAnd{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *LogicalAnd) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *LogicalAnd) GetMeta() *meta.Collection { func (n *LogicalAnd) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// LogicalOr node // LogicalOr node
type LogicalOr struct { type LogicalOr struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewLogicalOr node constructor // NewLogicalOr node constructor
func NewLogicalOr(Variable node.Node, Expression node.Node) *LogicalOr { func NewLogicalOr(Variable node.Node, Expression node.Node) *LogicalOr {
return &LogicalOr{ return &LogicalOr{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *LogicalOr) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *LogicalOr) GetMeta() *meta.Collection { func (n *LogicalOr) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// LogicalXor node // LogicalXor node
type LogicalXor struct { type LogicalXor struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewLogicalXor node constructor // NewLogicalXor node constructor
func NewLogicalXor(Variable node.Node, Expression node.Node) *LogicalXor { func NewLogicalXor(Variable node.Node, Expression node.Node) *LogicalXor {
return &LogicalXor{ return &LogicalXor{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *LogicalXor) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *LogicalXor) GetMeta() *meta.Collection { func (n *LogicalXor) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Minus node // Minus node
type Minus struct { type Minus struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewMinus node constructor // NewMinus node constructor
func NewMinus(Variable node.Node, Expression node.Node) *Minus { func NewMinus(Variable node.Node, Expression node.Node) *Minus {
return &Minus{ return &Minus{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Minus) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Minus) GetMeta() *meta.Collection { func (n *Minus) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Mod node // Mod node
type Mod struct { type Mod struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewMod node constructor // NewMod node constructor
func NewMod(Variable node.Node, Expression node.Node) *Mod { func NewMod(Variable node.Node, Expression node.Node) *Mod {
return &Mod{ return &Mod{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Mod) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Mod) GetMeta() *meta.Collection { func (n *Mod) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Mul node // Mul node
type Mul struct { type Mul struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewMul node constructor // NewMul node constructor
func NewMul(Variable node.Node, Expression node.Node) *Mul { func NewMul(Variable node.Node, Expression node.Node) *Mul {
return &Mul{ return &Mul{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Mul) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Mul) GetMeta() *meta.Collection { func (n *Mul) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// NotEqual node // NotEqual node
type NotEqual struct { type NotEqual struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewNotEqual node constructor // NewNotEqual node constructor
func NewNotEqual(Variable node.Node, Expression node.Node) *NotEqual { func NewNotEqual(Variable node.Node, Expression node.Node) *NotEqual {
return &NotEqual{ return &NotEqual{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *NotEqual) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *NotEqual) GetMeta() *meta.Collection { func (n *NotEqual) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// NotIdentical node // NotIdentical node
type NotIdentical struct { type NotIdentical struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewNotIdentical node constructor // NewNotIdentical node constructor
func NewNotIdentical(Variable node.Node, Expression node.Node) *NotIdentical { func NewNotIdentical(Variable node.Node, Expression node.Node) *NotIdentical {
return &NotIdentical{ return &NotIdentical{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *NotIdentical) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *NotIdentical) GetMeta() *meta.Collection { func (n *NotIdentical) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Plus node // Plus node
type Plus struct { type Plus struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewPlus node constructor // NewPlus node constructor
func NewPlus(Variable node.Node, Expression node.Node) *Plus { func NewPlus(Variable node.Node, Expression node.Node) *Plus {
return &Plus{ return &Plus{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Plus) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Plus) GetMeta() *meta.Collection { func (n *Plus) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Pow node // Pow node
type Pow struct { type Pow struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewPow node constructor // NewPow node constructor
func NewPow(Variable node.Node, Expression node.Node) *Pow { func NewPow(Variable node.Node, Expression node.Node) *Pow {
return &Pow{ return &Pow{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Pow) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Pow) GetMeta() *meta.Collection { func (n *Pow) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// ShiftLeft node // ShiftLeft node
type ShiftLeft struct { type ShiftLeft struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewShiftLeft node constructor // NewShiftLeft node constructor
func NewShiftLeft(Variable node.Node, Expression node.Node) *ShiftLeft { func NewShiftLeft(Variable node.Node, Expression node.Node) *ShiftLeft {
return &ShiftLeft{ return &ShiftLeft{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *ShiftLeft) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShiftLeft) GetMeta() *meta.Collection { func (n *ShiftLeft) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// ShiftRight node // ShiftRight node
type ShiftRight struct { type ShiftRight struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewShiftRight node constructor // NewShiftRight node constructor
func NewShiftRight(Variable node.Node, Expression node.Node) *ShiftRight { func NewShiftRight(Variable node.Node, Expression node.Node) *ShiftRight {
return &ShiftRight{ return &ShiftRight{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *ShiftRight) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShiftRight) GetMeta() *meta.Collection { func (n *ShiftRight) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Smaller node // Smaller node
type Smaller struct { type Smaller struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewSmaller node constructor // NewSmaller node constructor
func NewSmaller(Variable node.Node, Expression node.Node) *Smaller { func NewSmaller(Variable node.Node, Expression node.Node) *Smaller {
return &Smaller{ return &Smaller{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Smaller) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Smaller) GetMeta() *meta.Collection { func (n *Smaller) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// SmallerOrEqual node // SmallerOrEqual node
type SmallerOrEqual struct { type SmallerOrEqual struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewSmallerOrEqual node constructor // NewSmallerOrEqual node constructor
func NewSmallerOrEqual(Variable node.Node, Expression node.Node) *SmallerOrEqual { func NewSmallerOrEqual(Variable node.Node, Expression node.Node) *SmallerOrEqual {
return &SmallerOrEqual{ return &SmallerOrEqual{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *SmallerOrEqual) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *SmallerOrEqual) GetMeta() *meta.Collection { func (n *SmallerOrEqual) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package binary package binary
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// Spaceship node // Spaceship node
type Spaceship struct { type Spaceship struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
} }
// NewSpaceship node constructor // NewSpaceship node constructor
func NewSpaceship(Variable node.Node, Expression node.Node) *Spaceship { func NewSpaceship(Variable node.Node, Expression node.Node) *Spaceship {
return &Spaceship{ return &Spaceship{
Left: Variable, FreeFloating: nil,
Right: Expression, Left: Variable,
Right: Expression,
} }
} }
@ -33,8 +34,8 @@ func (n *Spaceship) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Spaceship) GetMeta() *meta.Collection { func (n *Spaceship) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -2,10 +2,9 @@ package binary_test
import ( import (
"bytes" "bytes"
"reflect"
"testing" "testing"
"github.com/kylelemons/godebug/pretty" "gotest.tools/assert"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr"
@ -16,18 +15,6 @@ import (
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
) )
func assertEqual(t *testing.T, expected interface{}, actual interface{}) {
if !reflect.DeepEqual(expected, actual) {
diff := pretty.Compare(expected, actual)
if diff != "" {
t.Errorf("diff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("expected and actual are not equal\n")
}
}
}
func TestBitwiseAnd(t *testing.T) { func TestBitwiseAnd(t *testing.T) {
src := `<? $a & $b;` src := `<? $a & $b;`
@ -95,12 +82,12 @@ func TestBitwiseAnd(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBitwiseOr(t *testing.T) { func TestBitwiseOr(t *testing.T) {
@ -170,12 +157,12 @@ func TestBitwiseOr(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBitwiseXor(t *testing.T) { func TestBitwiseXor(t *testing.T) {
@ -245,12 +232,12 @@ func TestBitwiseXor(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBooleanAnd(t *testing.T) { func TestBooleanAnd(t *testing.T) {
@ -320,12 +307,12 @@ func TestBooleanAnd(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBooleanOr(t *testing.T) { func TestBooleanOr(t *testing.T) {
@ -395,12 +382,12 @@ func TestBooleanOr(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestCoalesce(t *testing.T) { func TestCoalesce(t *testing.T) {
@ -470,7 +457,7 @@ func TestCoalesce(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestConcat(t *testing.T) { func TestConcat(t *testing.T) {
@ -540,12 +527,12 @@ func TestConcat(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestDiv(t *testing.T) { func TestDiv(t *testing.T) {
@ -615,12 +602,12 @@ func TestDiv(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestEqual(t *testing.T) { func TestEqual(t *testing.T) {
@ -690,12 +677,12 @@ func TestEqual(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestGreaterOrEqual(t *testing.T) { func TestGreaterOrEqual(t *testing.T) {
@ -765,12 +752,12 @@ func TestGreaterOrEqual(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestGreater(t *testing.T) { func TestGreater(t *testing.T) {
@ -840,12 +827,12 @@ func TestGreater(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestIdentical(t *testing.T) { func TestIdentical(t *testing.T) {
@ -915,12 +902,12 @@ func TestIdentical(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestLogicalAnd(t *testing.T) { func TestLogicalAnd(t *testing.T) {
@ -990,12 +977,12 @@ func TestLogicalAnd(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestLogicalOr(t *testing.T) { func TestLogicalOr(t *testing.T) {
@ -1065,12 +1052,12 @@ func TestLogicalOr(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestLogicalXor(t *testing.T) { func TestLogicalXor(t *testing.T) {
@ -1140,12 +1127,12 @@ func TestLogicalXor(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestMinus(t *testing.T) { func TestMinus(t *testing.T) {
@ -1215,12 +1202,12 @@ func TestMinus(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestMod(t *testing.T) { func TestMod(t *testing.T) {
@ -1290,12 +1277,12 @@ func TestMod(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestMul(t *testing.T) { func TestMul(t *testing.T) {
@ -1365,12 +1352,12 @@ func TestMul(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestNotEqual(t *testing.T) { func TestNotEqual(t *testing.T) {
@ -1440,12 +1427,12 @@ func TestNotEqual(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestNotIdentical(t *testing.T) { func TestNotIdentical(t *testing.T) {
@ -1515,12 +1502,12 @@ func TestNotIdentical(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestPlus(t *testing.T) { func TestPlus(t *testing.T) {
@ -1590,12 +1577,12 @@ func TestPlus(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestPow(t *testing.T) { func TestPow(t *testing.T) {
@ -1665,12 +1652,12 @@ func TestPow(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestShiftLeft(t *testing.T) { func TestShiftLeft(t *testing.T) {
@ -1740,12 +1727,12 @@ func TestShiftLeft(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestShiftRight(t *testing.T) { func TestShiftRight(t *testing.T) {
@ -1815,12 +1802,12 @@ func TestShiftRight(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestSmallerOrEqual(t *testing.T) { func TestSmallerOrEqual(t *testing.T) {
@ -1890,12 +1877,12 @@ func TestSmallerOrEqual(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestSmaller(t *testing.T) { func TestSmaller(t *testing.T) {
@ -1965,12 +1952,12 @@ func TestSmaller(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestSpaceship(t *testing.T) { func TestSpaceship(t *testing.T) {
@ -2040,5 +2027,5 @@ func TestSpaceship(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }

View File

@ -0,0 +1,117 @@
package binary_test
import (
"testing"
"gotest.tools/assert"
"github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr/binary"
)
var expected freefloating.Collection = freefloating.Collection{
freefloating.Start: []freefloating.String{
{
StringType: freefloating.WhiteSpaceType,
Value: " ",
Position: nil,
},
{
StringType: freefloating.CommentType,
Value: "//comment\n",
Position: nil,
},
},
}
var nodes = []node.Node{
&binary.BitwiseAnd{
FreeFloating: expected,
},
&binary.BitwiseOr{
FreeFloating: expected,
},
&binary.BitwiseXor{
FreeFloating: expected,
},
&binary.BooleanAnd{
FreeFloating: expected,
},
&binary.BooleanOr{
FreeFloating: expected,
},
&binary.Coalesce{
FreeFloating: expected,
},
&binary.Concat{
FreeFloating: expected,
},
&binary.Div{
FreeFloating: expected,
},
&binary.Equal{
FreeFloating: expected,
},
&binary.GreaterOrEqual{
FreeFloating: expected,
},
&binary.Greater{
FreeFloating: expected,
},
&binary.Identical{
FreeFloating: expected,
},
&binary.LogicalAnd{
FreeFloating: expected,
},
&binary.LogicalOr{
FreeFloating: expected,
},
&binary.LogicalXor{
FreeFloating: expected,
},
&binary.Minus{
FreeFloating: expected,
},
&binary.Mod{
FreeFloating: expected,
},
&binary.Mul{
FreeFloating: expected,
},
&binary.NotEqual{
FreeFloating: expected,
},
&binary.NotIdentical{
FreeFloating: expected,
},
&binary.Plus{
FreeFloating: expected,
},
&binary.Pow{
FreeFloating: expected,
},
&binary.ShiftLeft{
FreeFloating: expected,
},
&binary.ShiftRight{
FreeFloating: expected,
},
&binary.SmallerOrEqual{
FreeFloating: expected,
},
&binary.Smaller{
FreeFloating: expected,
},
&binary.Spaceship{
FreeFloating: expected,
},
}
func TestMeta(t *testing.T) {
for _, n := range nodes {
actual := *n.GetFreeFloating()
assert.DeepEqual(t, expected, actual)
}
}

View File

@ -1,61 +0,0 @@
package binary_test
import (
"testing"
"github.com/z7zmey/php-parser/node/expr/binary"
"github.com/z7zmey/php-parser/meta"
"github.com/z7zmey/php-parser/node"
)
var nodes = []node.Node{
&binary.BitwiseAnd{},
&binary.BitwiseOr{},
&binary.BitwiseXor{},
&binary.BooleanAnd{},
&binary.BooleanOr{},
&binary.Coalesce{},
&binary.Concat{},
&binary.Div{},
&binary.Equal{},
&binary.GreaterOrEqual{},
&binary.Greater{},
&binary.Identical{},
&binary.LogicalAnd{},
&binary.LogicalOr{},
&binary.LogicalXor{},
&binary.Minus{},
&binary.Mod{},
&binary.Mul{},
&binary.NotEqual{},
&binary.NotIdentical{},
&binary.Plus{},
&binary.Pow{},
&binary.ShiftLeft{},
&binary.ShiftRight{},
&binary.SmallerOrEqual{},
&binary.Smaller{},
&binary.Spaceship{},
}
func TestMeta(t *testing.T) {
expected := &meta.Collection{
&meta.Data{
Value: "//comment\n",
Type: meta.CommentType,
Position: nil,
},
&meta.Data{
Value: " ",
Type: meta.WhiteSpaceType,
Position: nil,
},
}
for _, n := range nodes {
n.GetMeta().Push(*expected...)
actual := n.GetMeta()
assertEqual(t, expected, actual)
}
}

View File

@ -3,6 +3,8 @@ package binary_test
import ( import (
"testing" "testing"
"gotest.tools/assert"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
) )
@ -11,6 +13,6 @@ func TestPosition(t *testing.T) {
for _, n := range nodes { for _, n := range nodes {
n.SetPosition(expected) n.SetPosition(expected)
actual := n.GetPosition() actual := n.GetPosition()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
} }

View File

@ -1,15 +1,13 @@
package binary_test package binary_test
import ( import (
"reflect"
"testing" "testing"
"github.com/kylelemons/godebug/pretty"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr"
"github.com/z7zmey/php-parser/node/expr/binary" "github.com/z7zmey/php-parser/node/expr/binary"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
"gotest.tools/assert"
) )
var nodesToTest = []struct { var nodesToTest = []struct {
@ -23,7 +21,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.BitwiseOr{ &binary.BitwiseOr{
@ -31,7 +29,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.BitwiseXor{ &binary.BitwiseXor{
@ -39,7 +37,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.BooleanAnd{ &binary.BooleanAnd{
@ -47,7 +45,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.BooleanOr{ &binary.BooleanOr{
@ -55,7 +53,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Coalesce{ &binary.Coalesce{
@ -63,7 +61,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Concat{ &binary.Concat{
@ -71,7 +69,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Div{ &binary.Div{
@ -79,7 +77,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Equal{ &binary.Equal{
@ -87,7 +85,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.GreaterOrEqual{ &binary.GreaterOrEqual{
@ -95,7 +93,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Greater{ &binary.Greater{
@ -103,7 +101,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Identical{ &binary.Identical{
@ -111,7 +109,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.LogicalAnd{ &binary.LogicalAnd{
@ -119,7 +117,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.LogicalOr{ &binary.LogicalOr{
@ -127,7 +125,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.LogicalXor{ &binary.LogicalXor{
@ -135,7 +133,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Minus{ &binary.Minus{
@ -143,7 +141,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Mod{ &binary.Mod{
@ -151,7 +149,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Mul{ &binary.Mul{
@ -159,7 +157,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.NotEqual{ &binary.NotEqual{
@ -167,7 +165,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.NotIdentical{ &binary.NotIdentical{
@ -175,7 +173,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Plus{ &binary.Plus{
@ -183,7 +181,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Pow{ &binary.Pow{
@ -191,7 +189,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.ShiftLeft{ &binary.ShiftLeft{
@ -199,7 +197,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.ShiftRight{ &binary.ShiftRight{
@ -207,7 +205,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.SmallerOrEqual{ &binary.SmallerOrEqual{
@ -215,7 +213,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Smaller{ &binary.Smaller{
@ -223,7 +221,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
{ {
&binary.Spaceship{ &binary.Spaceship{
@ -231,7 +229,7 @@ var nodesToTest = []struct {
Right: &expr.Variable{}, Right: &expr.Variable{},
}, },
[]string{"Left", "Right"}, []string{"Left", "Right"},
map[string]interface{}{}, nil,
}, },
} }
@ -253,31 +251,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {}
func TestVisitorDisableChildren(t *testing.T) { func TestVisitorDisableChildren(t *testing.T) {
for _, tt := range nodesToTest { for _, tt := range nodesToTest {
v := &visitorMock{false, nil} v := &visitorMock{false, []string{}}
tt.node.Walk(v) tt.node.Walk(v)
expected := []string{} expected := []string{}
actual := v.visitedKeys actual := v.visitedKeys
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }
func TestVisitor(t *testing.T) { func TestVisitor(t *testing.T) {
for _, tt := range nodesToTest { for _, tt := range nodesToTest {
v := &visitorMock{true, nil} v := &visitorMock{true, []string{}}
tt.node.Walk(v) tt.node.Walk(v)
expected := tt.expectedVisitedKeys expected := tt.expectedVisitedKeys
actual := v.visitedKeys actual := v.visitedKeys
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }
@ -288,9 +280,6 @@ func TestNameAttributes(t *testing.T) {
expected := tt.expectedAttributes expected := tt.expectedAttributes
actual := tt.node.Attributes() actual := tt.node.Attributes()
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }

View File

@ -1,7 +1,7 @@
package cast package cast
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Array node // Array node
type Array struct { type Array struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewArray node constructor // NewArray node constructor
func NewArray(Expr node.Node) *Array { func NewArray(Expr node.Node) *Array {
return &Array{ return &Array{
Expr: Expr, FreeFloating: nil,
Expr: Expr,
} }
} }
@ -31,8 +32,8 @@ func (n *Array) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Array) GetMeta() *meta.Collection { func (n *Array) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package cast package cast
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Bool node // Bool node
type Bool struct { type Bool struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewBool node constructor // NewBool node constructor
func NewBool(Expr node.Node) *Bool { func NewBool(Expr node.Node) *Bool {
return &Bool{ return &Bool{
Expr: Expr, FreeFloating: nil,
Expr: Expr,
} }
} }
@ -31,8 +32,8 @@ func (n *Bool) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Bool) GetMeta() *meta.Collection { func (n *Bool) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package cast package cast
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Double node // Double node
type Double struct { type Double struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewDouble node constructor // NewDouble node constructor
func NewDouble(Expr node.Node) *Double { func NewDouble(Expr node.Node) *Double {
return &Double{ return &Double{
Expr: Expr, FreeFloating: nil,
Expr: Expr,
} }
} }
@ -31,8 +32,8 @@ func (n *Double) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Double) GetMeta() *meta.Collection { func (n *Double) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package cast package cast
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Int node // Int node
type Int struct { type Int struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewInt node constructor // NewInt node constructor
func NewInt(Expr node.Node) *Int { func NewInt(Expr node.Node) *Int {
return &Int{ return &Int{
Expr: Expr, FreeFloating: nil,
Expr: Expr,
} }
} }
@ -31,8 +32,8 @@ func (n *Int) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Int) GetMeta() *meta.Collection { func (n *Int) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package cast package cast
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Object node // Object node
type Object struct { type Object struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewObject node constructor // NewObject node constructor
func NewObject(Expr node.Node) *Object { func NewObject(Expr node.Node) *Object {
return &Object{ return &Object{
Expr: Expr, FreeFloating: nil,
Expr: Expr,
} }
} }
@ -31,8 +32,8 @@ func (n *Object) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Object) GetMeta() *meta.Collection { func (n *Object) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package cast package cast
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// String node // String node
type String struct { type String struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewString node constructor // NewString node constructor
func NewString(Expr node.Node) *String { func NewString(Expr node.Node) *String {
return &String{ return &String{
Expr: Expr, FreeFloating: nil,
Expr: Expr,
} }
} }
@ -31,8 +32,8 @@ func (n *String) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *String) GetMeta() *meta.Collection { func (n *String) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package cast package cast
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Unset node // Unset node
type Unset struct { type Unset struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewUnset node constructor // NewUnset node constructor
func NewUnset(Expr node.Node) *Unset { func NewUnset(Expr node.Node) *Unset {
return &Unset{ return &Unset{
Expr: Expr, FreeFloating: nil,
Expr: Expr,
} }
} }
@ -31,8 +32,8 @@ func (n *Unset) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Unset) GetMeta() *meta.Collection { func (n *Unset) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -2,10 +2,9 @@ package cast_test
import ( import (
"bytes" "bytes"
"reflect"
"testing" "testing"
"github.com/kylelemons/godebug/pretty" "gotest.tools/assert"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr"
@ -16,18 +15,6 @@ import (
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
) )
func assertEqual(t *testing.T, expected interface{}, actual interface{}) {
if !reflect.DeepEqual(expected, actual) {
diff := pretty.Compare(expected, actual)
if diff != "" {
t.Errorf("diff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("expected and actual are not equal\n")
}
}
}
func TestArray(t *testing.T) { func TestArray(t *testing.T) {
src := `<? (array)$a;` src := `<? (array)$a;`
@ -78,12 +65,12 @@ func TestArray(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBool(t *testing.T) { func TestBool(t *testing.T) {
@ -136,12 +123,12 @@ func TestBool(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBoolShort(t *testing.T) { func TestBoolShort(t *testing.T) {
@ -194,12 +181,12 @@ func TestBoolShort(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestDouble(t *testing.T) { func TestDouble(t *testing.T) {
@ -252,12 +239,12 @@ func TestDouble(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestCastFloat(t *testing.T) { func TestCastFloat(t *testing.T) {
@ -310,12 +297,12 @@ func TestCastFloat(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestInt(t *testing.T) { func TestInt(t *testing.T) {
@ -368,12 +355,12 @@ func TestInt(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestIntShort(t *testing.T) { func TestIntShort(t *testing.T) {
@ -426,12 +413,12 @@ func TestIntShort(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestObject(t *testing.T) { func TestObject(t *testing.T) {
@ -484,12 +471,12 @@ func TestObject(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestString(t *testing.T) { func TestString(t *testing.T) {
@ -542,12 +529,12 @@ func TestString(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestBinaryString(t *testing.T) { func TestBinaryString(t *testing.T) {
@ -600,12 +587,12 @@ func TestBinaryString(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
func TestUnset(t *testing.T) { func TestUnset(t *testing.T) {
@ -658,10 +645,10 @@ func TestUnset(t *testing.T) {
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
php7parser.Parse() php7parser.Parse()
actual := php7parser.GetRootNode() actual := php7parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php")
php5parser.Parse() php5parser.Parse()
actual = php5parser.GetRootNode() actual = php5parser.GetRootNode()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }

View File

@ -0,0 +1,57 @@
package cast_test
import (
"testing"
"gotest.tools/assert"
"github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr/cast"
)
var expected freefloating.Collection = freefloating.Collection{
freefloating.Start: []freefloating.String{
{
StringType: freefloating.WhiteSpaceType,
Value: " ",
Position: nil,
},
{
StringType: freefloating.CommentType,
Value: "//comment\n",
Position: nil,
},
},
}
var nodes = []node.Node{
&cast.Array{
FreeFloating: expected,
},
&cast.Bool{
FreeFloating: expected,
},
&cast.Double{
FreeFloating: expected,
},
&cast.Int{
FreeFloating: expected,
},
&cast.Object{
FreeFloating: expected,
},
&cast.String{
FreeFloating: expected,
},
&cast.Unset{
FreeFloating: expected,
},
}
func TestMeta(t *testing.T) {
for _, n := range nodes {
actual := *n.GetFreeFloating()
assert.DeepEqual(t, expected, actual)
}
}

View File

@ -1,41 +0,0 @@
package cast_test
import (
"testing"
"github.com/z7zmey/php-parser/node/expr/cast"
"github.com/z7zmey/php-parser/meta"
"github.com/z7zmey/php-parser/node"
)
var nodes = []node.Node{
&cast.Array{},
&cast.Bool{},
&cast.Double{},
&cast.Int{},
&cast.Object{},
&cast.String{},
&cast.Unset{},
}
func TestMeta(t *testing.T) {
expected := &meta.Collection{
&meta.Data{
Value: "//comment\n",
Type: meta.CommentType,
Position: nil,
},
&meta.Data{
Value: " ",
Type: meta.WhiteSpaceType,
Position: nil,
},
}
for _, n := range nodes {
n.GetMeta().Push(*expected...)
actual := n.GetMeta()
assertEqual(t, expected, actual)
}
}

View File

@ -3,6 +3,8 @@ package cast_test
import ( import (
"testing" "testing"
"gotest.tools/assert"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
) )
@ -11,6 +13,6 @@ func TestPosition(t *testing.T) {
for _, n := range nodes { for _, n := range nodes {
n.SetPosition(expected) n.SetPosition(expected)
actual := n.GetPosition() actual := n.GetPosition()
assertEqual(t, expected, actual) assert.DeepEqual(t, expected, actual)
} }
} }

View File

@ -1,10 +1,9 @@
package cast_test package cast_test
import ( import (
"reflect"
"testing" "testing"
"github.com/kylelemons/godebug/pretty" "gotest.tools/assert"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr"
@ -22,49 +21,49 @@ var nodesToTest = []struct {
Expr: &expr.Variable{}, Expr: &expr.Variable{},
}, },
[]string{"Expr"}, []string{"Expr"},
map[string]interface{}{}, nil,
}, },
{ {
&cast.Bool{ &cast.Bool{
Expr: &expr.Variable{}, Expr: &expr.Variable{},
}, },
[]string{"Expr"}, []string{"Expr"},
map[string]interface{}{}, nil,
}, },
{ {
&cast.Double{ &cast.Double{
Expr: &expr.Variable{}, Expr: &expr.Variable{},
}, },
[]string{"Expr"}, []string{"Expr"},
map[string]interface{}{}, nil,
}, },
{ {
&cast.Int{ &cast.Int{
Expr: &expr.Variable{}, Expr: &expr.Variable{},
}, },
[]string{"Expr"}, []string{"Expr"},
map[string]interface{}{}, nil,
}, },
{ {
&cast.Object{ &cast.Object{
Expr: &expr.Variable{}, Expr: &expr.Variable{},
}, },
[]string{"Expr"}, []string{"Expr"},
map[string]interface{}{}, nil,
}, },
{ {
&cast.String{ &cast.String{
Expr: &expr.Variable{}, Expr: &expr.Variable{},
}, },
[]string{"Expr"}, []string{"Expr"},
map[string]interface{}{}, nil,
}, },
{ {
&cast.Unset{ &cast.Unset{
Expr: &expr.Variable{}, Expr: &expr.Variable{},
}, },
[]string{"Expr"}, []string{"Expr"},
map[string]interface{}{}, nil,
}, },
} }
@ -86,31 +85,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {}
func TestVisitorDisableChildren(t *testing.T) { func TestVisitorDisableChildren(t *testing.T) {
for _, tt := range nodesToTest { for _, tt := range nodesToTest {
v := &visitorMock{false, nil} v := &visitorMock{false, []string{}}
tt.node.Walk(v) tt.node.Walk(v)
expected := []string{} expected := []string{}
actual := v.visitedKeys actual := v.visitedKeys
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }
func TestVisitor(t *testing.T) { func TestVisitor(t *testing.T) {
for _, tt := range nodesToTest { for _, tt := range nodesToTest {
v := &visitorMock{true, nil} v := &visitorMock{true, []string{}}
tt.node.Walk(v) tt.node.Walk(v)
expected := tt.expectedVisitedKeys expected := tt.expectedVisitedKeys
actual := v.visitedKeys actual := v.visitedKeys
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }
@ -121,9 +114,6 @@ func TestNameAttributes(t *testing.T) {
expected := tt.expectedAttributes expected := tt.expectedAttributes
actual := tt.node.Attributes() actual := tt.node.Attributes()
diff := pretty.Compare(expected, actual) assert.DeepEqual(t, expected, actual)
if diff != "" {
t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff)
}
} }
} }

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Array node // Array node
type Array struct { type Array struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Items []node.Node Items []node.Node
} }
// NewArray node constructor // NewArray node constructor
func NewArray(Items []node.Node) *Array { func NewArray(Items []node.Node) *Array {
return &Array{ return &Array{
Items: Items, FreeFloating: nil,
Items: Items,
} }
} }
@ -31,8 +32,8 @@ func (n *Array) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Array) GetMeta() *meta.Collection { func (n *Array) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// ArrayDimFetch node // ArrayDimFetch node
type ArrayDimFetch struct { type ArrayDimFetch struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Dim node.Node Dim node.Node
} }
// NewArrayDimFetch node constructor // NewArrayDimFetch node constructor
func NewArrayDimFetch(Variable node.Node, Dim node.Node) *ArrayDimFetch { func NewArrayDimFetch(Variable node.Node, Dim node.Node) *ArrayDimFetch {
return &ArrayDimFetch{ return &ArrayDimFetch{
Variable: Variable, FreeFloating: nil,
Dim: Dim, Variable: Variable,
Dim: Dim,
} }
} }
@ -33,8 +34,8 @@ func (n *ArrayDimFetch) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ArrayDimFetch) GetMeta() *meta.Collection { func (n *ArrayDimFetch) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// ArrayItem node // ArrayItem node
type ArrayItem struct { type ArrayItem struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Key node.Node Key node.Node
Val node.Node Val node.Node
} }
// NewArrayItem node constructor // NewArrayItem node constructor
func NewArrayItem(Key node.Node, Val node.Node) *ArrayItem { func NewArrayItem(Key node.Node, Val node.Node) *ArrayItem {
return &ArrayItem{ return &ArrayItem{
Key: Key, FreeFloating: nil,
Val: Val, Key: Key,
Val: Val,
} }
} }
@ -33,8 +34,8 @@ func (n *ArrayItem) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ArrayItem) GetMeta() *meta.Collection { func (n *ArrayItem) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// BitwiseNot node // BitwiseNot node
type BitwiseNot struct { type BitwiseNot struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewBitwiseNot node constructor // NewBitwiseNot node constructor
func NewBitwiseNot(Expression node.Node) *BitwiseNot { func NewBitwiseNot(Expression node.Node) *BitwiseNot {
return &BitwiseNot{ return &BitwiseNot{
Expr: Expression, FreeFloating: nil,
Expr: Expression,
} }
} }
@ -31,8 +32,8 @@ func (n *BitwiseNot) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseNot) GetMeta() *meta.Collection { func (n *BitwiseNot) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// BooleanNot node // BooleanNot node
type BooleanNot struct { type BooleanNot struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewBooleanNot node constructor // NewBooleanNot node constructor
func NewBooleanNot(Expression node.Node) *BooleanNot { func NewBooleanNot(Expression node.Node) *BooleanNot {
return &BooleanNot{ return &BooleanNot{
Expr: Expression, FreeFloating: nil,
Expr: Expression,
} }
} }
@ -31,8 +32,8 @@ func (n *BooleanNot) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BooleanNot) GetMeta() *meta.Collection { func (n *BooleanNot) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,7 +9,7 @@ import (
// ClassConstFetch node // ClassConstFetch node
type ClassConstFetch struct { type ClassConstFetch struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Class node.Node Class node.Node
ConstantName node.Node ConstantName node.Node
@ -18,6 +18,7 @@ type ClassConstFetch struct {
// NewClassConstFetch node constructor // NewClassConstFetch node constructor
func NewClassConstFetch(Class node.Node, ConstantName node.Node) *ClassConstFetch { func NewClassConstFetch(Class node.Node, ConstantName node.Node) *ClassConstFetch {
return &ClassConstFetch{ return &ClassConstFetch{
FreeFloating: nil,
Class: Class, Class: Class,
ConstantName: ConstantName, ConstantName: ConstantName,
} }
@ -33,8 +34,8 @@ func (n *ClassConstFetch) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ClassConstFetch) GetMeta() *meta.Collection { func (n *ClassConstFetch) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Clone node // Clone node
type Clone struct { type Clone struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewClone node constructor // NewClone node constructor
func NewClone(Expression node.Node) *Clone { func NewClone(Expression node.Node) *Clone {
return &Clone{ return &Clone{
Expr: Expression, FreeFloating: nil,
Expr: Expression,
} }
} }
@ -31,8 +32,8 @@ func (n *Clone) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Clone) GetMeta() *meta.Collection { func (n *Clone) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,7 +9,7 @@ import (
// Closure node // Closure node
type Closure struct { type Closure struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
ReturnsRef bool ReturnsRef bool
Static bool Static bool
@ -23,6 +23,7 @@ type Closure struct {
// NewClosure node constructor // NewClosure node constructor
func NewClosure(Params []node.Node, ClosureUse *ClosureUse, ReturnType node.Node, Stmts []node.Node, Static bool, ReturnsRef bool, PhpDocComment string) *Closure { func NewClosure(Params []node.Node, ClosureUse *ClosureUse, ReturnType node.Node, Stmts []node.Node, Static bool, ReturnsRef bool, PhpDocComment string) *Closure {
return &Closure{ return &Closure{
FreeFloating: nil,
ReturnsRef: ReturnsRef, ReturnsRef: ReturnsRef,
Static: Static, Static: Static,
PhpDocComment: PhpDocComment, PhpDocComment: PhpDocComment,
@ -43,8 +44,8 @@ func (n *Closure) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Closure) GetMeta() *meta.Collection { func (n *Closure) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// ClosureUse node // ClosureUse node
type ClosureUse struct { type ClosureUse struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Uses []node.Node Uses []node.Node
} }
// NewClosureUse node constructor // NewClosureUse node constructor
func NewClosureUse(Uses []node.Node) *ClosureUse { func NewClosureUse(Uses []node.Node) *ClosureUse {
return &ClosureUse{ return &ClosureUse{
Uses: Uses, FreeFloating: nil,
Uses: Uses,
} }
} }
@ -31,8 +32,8 @@ func (n *ClosureUse) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ClosureUse) GetMeta() *meta.Collection { func (n *ClosureUse) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// ConstFetch node // ConstFetch node
type ConstFetch struct { type ConstFetch struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Constant node.Node Constant node.Node
} }
// NewConstFetch node constructor // NewConstFetch node constructor
func NewConstFetch(Constant node.Node) *ConstFetch { func NewConstFetch(Constant node.Node) *ConstFetch {
return &ConstFetch{ return &ConstFetch{
Constant: Constant, FreeFloating: nil,
Constant: Constant,
} }
} }
@ -31,8 +32,8 @@ func (n *ConstFetch) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ConstFetch) GetMeta() *meta.Collection { func (n *ConstFetch) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Empty node // Empty node
type Empty struct { type Empty struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewEmpty node constructor // NewEmpty node constructor
func NewEmpty(Expression node.Node) *Empty { func NewEmpty(Expression node.Node) *Empty {
return &Empty{ return &Empty{
Expr: Expression, FreeFloating: nil,
Expr: Expression,
} }
} }
@ -31,8 +32,8 @@ func (n *Empty) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Empty) GetMeta() *meta.Collection { func (n *Empty) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// ErrorSuppress node // ErrorSuppress node
type ErrorSuppress struct { type ErrorSuppress struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewErrorSuppress node constructor // NewErrorSuppress node constructor
func NewErrorSuppress(Expression node.Node) *ErrorSuppress { func NewErrorSuppress(Expression node.Node) *ErrorSuppress {
return &ErrorSuppress{ return &ErrorSuppress{
Expr: Expression, FreeFloating: nil,
Expr: Expression,
} }
} }
@ -31,8 +32,8 @@ func (n *ErrorSuppress) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ErrorSuppress) GetMeta() *meta.Collection { func (n *ErrorSuppress) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Eval node // Eval node
type Eval struct { type Eval struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewEval node constructor // NewEval node constructor
func NewEval(Expression node.Node) *Eval { func NewEval(Expression node.Node) *Eval {
return &Eval{ return &Eval{
Expr: Expression, FreeFloating: nil,
Expr: Expression,
} }
} }
@ -31,8 +32,8 @@ func (n *Eval) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Eval) GetMeta() *meta.Collection { func (n *Eval) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,16 +9,17 @@ import (
// Exit node // Exit node
type Exit struct { type Exit struct {
Meta meta.Collection FreeFloating freefloating.Collection
Die bool Die bool
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewExit node constructor // NewExit node constructor
func NewExit(Expr node.Node) *Exit { func NewExit(Expr node.Node) *Exit {
return &Exit{ return &Exit{
Expr: Expr, FreeFloating: nil,
Expr: Expr,
} }
} }
@ -32,8 +33,8 @@ func (n *Exit) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Exit) GetMeta() *meta.Collection { func (n *Exit) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,7 +9,7 @@ import (
// FunctionCall node // FunctionCall node
type FunctionCall struct { type FunctionCall struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Function node.Node Function node.Node
ArgumentList *node.ArgumentList ArgumentList *node.ArgumentList
@ -18,6 +18,7 @@ type FunctionCall struct {
// NewFunctionCall node constructor // NewFunctionCall node constructor
func NewFunctionCall(Function node.Node, ArgumentList *node.ArgumentList) *FunctionCall { func NewFunctionCall(Function node.Node, ArgumentList *node.ArgumentList) *FunctionCall {
return &FunctionCall{ return &FunctionCall{
FreeFloating: nil,
Function: Function, Function: Function,
ArgumentList: ArgumentList, ArgumentList: ArgumentList,
} }
@ -33,8 +34,8 @@ func (n *FunctionCall) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *FunctionCall) GetMeta() *meta.Collection { func (n *FunctionCall) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Include node // Include node
type Include struct { type Include struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewInclude node constructor // NewInclude node constructor
func NewInclude(Expression node.Node) *Include { func NewInclude(Expression node.Node) *Include {
return &Include{ return &Include{
Expr: Expression, FreeFloating: nil,
Expr: Expression,
} }
} }
@ -31,8 +32,8 @@ func (n *Include) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Include) GetMeta() *meta.Collection { func (n *Include) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// IncludeOnce node // IncludeOnce node
type IncludeOnce struct { type IncludeOnce struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
// NewIncludeOnce node constructor // NewIncludeOnce node constructor
func NewIncludeOnce(Expression node.Node) *IncludeOnce { func NewIncludeOnce(Expression node.Node) *IncludeOnce {
return &IncludeOnce{ return &IncludeOnce{
Expr: Expression, FreeFloating: nil,
Expr: Expression,
} }
} }
@ -31,8 +32,8 @@ func (n *IncludeOnce) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *IncludeOnce) GetMeta() *meta.Collection { func (n *IncludeOnce) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,17 +9,18 @@ import (
// InstanceOf node // InstanceOf node
type InstanceOf struct { type InstanceOf struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
Class node.Node Class node.Node
} }
// NewInstanceOf node constructor // NewInstanceOf node constructor
func NewInstanceOf(Expr node.Node, Class node.Node) *InstanceOf { func NewInstanceOf(Expr node.Node, Class node.Node) *InstanceOf {
return &InstanceOf{ return &InstanceOf{
Expr: Expr, FreeFloating: nil,
Class: Class, Expr: Expr,
Class: Class,
} }
} }
@ -33,8 +34,8 @@ func (n *InstanceOf) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *InstanceOf) GetMeta() *meta.Collection { func (n *InstanceOf) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// Isset node // Isset node
type Isset struct { type Isset struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variables []node.Node Variables []node.Node
} }
// NewIsset node constructor // NewIsset node constructor
func NewIsset(Variables []node.Node) *Isset { func NewIsset(Variables []node.Node) *Isset {
return &Isset{ return &Isset{
Variables: Variables, FreeFloating: nil,
Variables: Variables,
} }
} }
@ -31,8 +32,8 @@ func (n *Isset) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Isset) GetMeta() *meta.Collection { func (n *Isset) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// List node // List node
type List struct { type List struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Items []node.Node Items []node.Node
} }
// NewList node constructor // NewList node constructor
func NewList(Items []node.Node) *List { func NewList(Items []node.Node) *List {
return &List{ return &List{
Items: Items, FreeFloating: nil,
Items: Items,
} }
} }
@ -31,8 +32,8 @@ func (n *List) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *List) GetMeta() *meta.Collection { func (n *List) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,7 +9,7 @@ import (
// MethodCall node // MethodCall node
type MethodCall struct { type MethodCall struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Method node.Node Method node.Node
@ -19,6 +19,7 @@ type MethodCall struct {
// NewMethodCall node constructor // NewMethodCall node constructor
func NewMethodCall(Variable node.Node, Method node.Node, ArgumentList *node.ArgumentList) *MethodCall { func NewMethodCall(Variable node.Node, Method node.Node, ArgumentList *node.ArgumentList) *MethodCall {
return &MethodCall{ return &MethodCall{
FreeFloating: nil,
Variable: Variable, Variable: Variable,
Method: Method, Method: Method,
ArgumentList: ArgumentList, ArgumentList: ArgumentList,
@ -35,8 +36,8 @@ func (n *MethodCall) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *MethodCall) GetMeta() *meta.Collection { func (n *MethodCall) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,7 +9,7 @@ import (
// New node // New node
type New struct { type New struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Class node.Node Class node.Node
ArgumentList *node.ArgumentList ArgumentList *node.ArgumentList
@ -18,6 +18,7 @@ type New struct {
// NewNew node constructor // NewNew node constructor
func NewNew(Class node.Node, ArgumentList *node.ArgumentList) *New { func NewNew(Class node.Node, ArgumentList *node.ArgumentList) *New {
return &New{ return &New{
FreeFloating: nil,
Class: Class, Class: Class,
ArgumentList: ArgumentList, ArgumentList: ArgumentList,
} }
@ -33,8 +34,8 @@ func (n *New) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *New) GetMeta() *meta.Collection { func (n *New) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// PostDec node // PostDec node
type PostDec struct { type PostDec struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
} }
// NewPostDec node constructor // NewPostDec node constructor
func NewPostDec(Variable node.Node) *PostDec { func NewPostDec(Variable node.Node) *PostDec {
return &PostDec{ return &PostDec{
Variable: Variable, FreeFloating: nil,
Variable: Variable,
} }
} }
@ -31,8 +32,8 @@ func (n *PostDec) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *PostDec) GetMeta() *meta.Collection { func (n *PostDec) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// PostInc node // PostInc node
type PostInc struct { type PostInc struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
} }
// NewPostInc node constructor // NewPostInc node constructor
func NewPostInc(Variable node.Node) *PostInc { func NewPostInc(Variable node.Node) *PostInc {
return &PostInc{ return &PostInc{
Variable: Variable, FreeFloating: nil,
Variable: Variable,
} }
} }
@ -31,8 +32,8 @@ func (n *PostInc) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *PostInc) GetMeta() *meta.Collection { func (n *PostInc) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -1,7 +1,7 @@
package expr package expr
import ( import (
"github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/freefloating"
"github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/walker" "github.com/z7zmey/php-parser/walker"
@ -9,15 +9,16 @@ import (
// PreDec node // PreDec node
type PreDec struct { type PreDec struct {
Meta meta.Collection FreeFloating freefloating.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
} }
// NewPreDec node constructor // NewPreDec node constructor
func NewPreDec(Variable node.Node) *PreDec { func NewPreDec(Variable node.Node) *PreDec {
return &PreDec{ return &PreDec{
Variable: Variable, FreeFloating: nil,
Variable: Variable,
} }
} }
@ -31,8 +32,8 @@ func (n *PreDec) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *PreDec) GetMeta() *meta.Collection { func (n *PreDec) GetFreeFloating() *freefloating.Collection {
return &n.Meta return &n.FreeFloating
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

Some files were not shown because too many files have changed in this diff Show More