#51 saving optional tokes and tokens that have different representation as meta

This commit is contained in:
z7zmey 2018-07-29 11:44:38 +03:00
parent 0138749c6d
commit 4989d31874
223 changed files with 9832 additions and 5976 deletions

16
main.go
View File

@ -18,6 +18,7 @@ import (
"github.com/z7zmey/php-parser/parser" "github.com/z7zmey/php-parser/parser"
"github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php5"
"github.com/z7zmey/php-parser/php7" "github.com/z7zmey/php-parser/php7"
"github.com/z7zmey/php-parser/printer"
"github.com/z7zmey/php-parser/visitor" "github.com/z7zmey/php-parser/visitor"
) )
@ -27,6 +28,7 @@ var dumpType string
var profiler string var profiler string
var withMeta *bool var withMeta *bool
var showResolvedNs *bool var showResolvedNs *bool
var printBack *bool
type file struct { type file struct {
path string path string
@ -37,6 +39,7 @@ func main() {
usePhp5 = flag.Bool("php5", false, "parse as PHP5") usePhp5 = flag.Bool("php5", false, "parse as PHP5")
withMeta = flag.Bool("meta", false, "show meta") withMeta = flag.Bool("meta", false, "show meta")
showResolvedNs = flag.Bool("r", false, "resolve names") showResolvedNs = flag.Bool("r", false, "resolve names")
printBack = flag.Bool("pb", false, "print AST back into the parsed file")
flag.StringVar(&dumpType, "d", "", "dump format: [custom, go, json, pretty_json]") flag.StringVar(&dumpType, "d", "", "dump format: [custom, go, json, pretty_json]")
flag.StringVar(&profiler, "prof", "", "start profiler: [cpu, mem, trace]") flag.StringVar(&profiler, "prof", "", "start profiler: [cpu, mem, trace]")
@ -62,7 +65,7 @@ func main() {
} }
// run printer goroutine // run printer goroutine
go printer(resultCh) go printerWorker(resultCh)
// process files // process files
processPath(flag.Args(), fileCh) processPath(flag.Args(), fileCh)
@ -133,7 +136,7 @@ func parserWorker(fileCh <-chan *file, result chan<- parser.Parser) {
} }
} }
func printer(result <-chan parser.Parser) { func printerWorker(result <-chan parser.Parser) {
var counter int var counter int
w := bufio.NewWriter(os.Stdout) w := bufio.NewWriter(os.Stdout)
@ -153,6 +156,15 @@ func printer(result <-chan parser.Parser) {
fmt.Fprintln(w, e) fmt.Fprintln(w, e)
} }
if *printBack {
o := bytes.NewBuffer([]byte{})
p := printer.NewPrinter(o)
p.Print(parserWorker.GetRootNode())
err := ioutil.WriteFile(parserWorker.GetPath(), o.Bytes(), 0644)
checkErr(err)
}
var nsResolver *visitor.NamespaceResolver var nsResolver *visitor.NamespaceResolver
if *showResolvedNs { if *showResolvedNs {
nsResolver = visitor.NewNamespaceResolver() nsResolver = visitor.NewNamespaceResolver()

115
meta/collection.go Normal file
View File

@ -0,0 +1,115 @@
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
}
// Filter function signature
type Filter func(d *Data) bool
// TokenNameFilter generates filter function that returns true
// if data.TokenName exactly same as given
func TokenNameFilter(tn TokenName) Filter {
return func(d *Data) bool {
return d.TokenName == tn
}
}
// TypeFilter generates filter function that returns true
// if data.Type exactly same as given
func TypeFilter(t Type) Filter {
return func(d *Data) bool {
return d.Type == t
}
}
// 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)
}
}

422
meta/collection_test.go Normal file
View File

@ -0,0 +1,422 @@
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}
expectedCuttedCollection := &meta.Collection{OpenParenthesisComment, OpenParenthesisToken}
// action
actualCuttedCollection := 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(expectedCuttedCollection, actualCuttedCollection) {
diff := pretty.Compare(expectedCuttedCollection, actualCuttedCollection)
if diff != "" {
t.Errorf("\nexpected and actual cutted collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual cutted 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}
expectedCuttedCollection := &meta.Collection{whiteSpace, OpenParenthesisComment}
// action
actualCuttedCollection := 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(expectedCuttedCollection, actualCuttedCollection) {
diff := pretty.Compare(expectedCuttedCollection, actualCuttedCollection)
if diff != "" {
t.Errorf("\nexpected and actual cutted collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual cutted 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,
}
expectedCuttedCollection := &meta.Collection{
OpenParenthesisComment,
}
// action
actualCuttedCollection := 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(expectedCuttedCollection, actualCuttedCollection) {
diff := pretty.Compare(expectedCuttedCollection, actualCuttedCollection)
if diff != "" {
t.Errorf("\nexpected and actual cutted collections are not equal\ndiff: (-expected +actual)\n%s", diff)
} else {
t.Errorf("\nexpected and actual cutted collections are not equal\n")
}
}
}

View File

@ -1,39 +0,0 @@
package meta
import (
"github.com/z7zmey/php-parser/position"
)
// Comment aggrigates information about comment /**
type Comment struct {
Value string
Position *position.Position
TokenName TokenName
}
// NewComment - Comment constructor
func NewComment(value string, pos *position.Position) *Comment {
return &Comment{
Value: value,
Position: pos,
TokenName: UnknownToken,
}
}
// SetTokenName sets token name
func (c *Comment) SetTokenName(tokenName TokenName) {
c.TokenName = tokenName
}
// GetTokenName returns token name
func (c *Comment) GetTokenName() TokenName {
return c.TokenName
}
func (c *Comment) String() string {
return c.Value
}
func (c *Comment) GetPosition() *position.Position {
return c.Position
}

View File

@ -1,44 +0,0 @@
package meta_test
import (
"testing"
"github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/meta"
)
func TestCommentPrint(t *testing.T) {
expected := "/** hello world */"
comment := meta.NewComment(expected, nil)
actual := comment.String()
if expected != actual {
t.Errorf("expected and actual are not equal\n")
}
}
func TestCommentSetGetTokenName(t *testing.T) {
expected := meta.ArrayToken
c := meta.NewComment("/** hello world */", nil)
c.SetTokenName(expected)
actual := c.GetTokenName()
if expected != actual {
t.Errorf("expected and actual are not equal\n")
}
}
func TestCommentGetPosition(t *testing.T) {
expected := position.NewPosition(1, 1, 1, 1)
c := meta.NewComment("/** hello world */", expected)
actual := c.GetPosition()
if expected != actual {
t.Errorf("expected and actual are not equal\n")
}
}

17
meta/data.go Normal file
View File

@ -0,0 +1,17 @@
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
}

21
meta/data_test.go Normal file
View File

@ -0,0 +1,21 @@
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,12 +0,0 @@
package meta
import (
"github.com/z7zmey/php-parser/position"
)
type Meta interface {
String() string
SetTokenName(tn TokenName)
GetTokenName() TokenName
GetPosition() *position.Position
}

View File

@ -36,7 +36,6 @@ const (
EnddeclareToken EnddeclareToken
AsToken AsToken
SwitchToken SwitchToken
SwitchSemicolonToken
EndswitchToken EndswitchToken
CaseToken CaseToken
DefaultToken DefaultToken
@ -68,9 +67,11 @@ const (
CallableToken CallableToken
StartHeredocToken StartHeredocToken
DollarOpenCurlyBracesToken DollarOpenCurlyBracesToken
DollarCloseCurlyBracesToken
CurlyOpenToken CurlyOpenToken
PaamayimNekudotayimToken PaamayimNekudotayimToken
NamespaceToken NamespaceToken
UseLeadingNsSeparatorToken
NsSeparatorToken NsSeparatorToken
EllipsisToken EllipsisToken
EvalToken EvalToken
@ -80,7 +81,7 @@ const (
LogicalXorToken LogicalXorToken
LogicalAndToken LogicalAndToken
InstanceofToken InstanceofToken
NewToken NewAnchor
CloneToken CloneToken
ElseifToken ElseifToken
ElseToken ElseToken

View File

@ -4,9 +4,9 @@ package meta
import "strconv" import "strconv"
const _TokenName_name = "UnknownTokenNodeStartNodeEndMagicConstantTokenIncludeTokenIncludeOnceTokenExitTokenIfTokenLnumberTokenDnumberTokenStringTokenStringVarnameTokenVariableTokenNumStringTokenInlineHTMLTokenEncapsedAndWhitespaceTokenConstantEncapsedStringTokenEchoTokenDoTokenWhileTokenEndwhileTokenForInitSemicolonTokenForCondSemicolonTokenForTokenEndforTokenForeachTokenEndforeachTokenDeclareTokenEnddeclareTokenAsTokenSwitchTokenSwitchSemicolonTokenEndswitchTokenCaseTokenDefaultTokenBreakTokenContinueTokenGotoTokenFunctionTokenConstTokenReturnTokenTryTokenCatchTokenFinallyTokenThrowTokenUseTokenInsteadofTokenGlobalTokenVarTokenUnsetTokenIssetTokenEmptyTokenClassTokenTraitTokenInterfaceTokenExtendsTokenImplementsTokenDoubleArrowTokenListTokenArrayTokenCallableTokenStartHeredocTokenDollarOpenCurlyBracesTokenCurlyOpenTokenPaamayimNekudotayimTokenNamespaceTokenNsSeparatorTokenEllipsisTokenEvalTokenRequireTokenRequireOnceTokenLogicalOrTokenLogicalXorTokenLogicalAndTokenInstanceofTokenNewTokenCloneTokenElseifTokenElseTokenEndifTokenPrintTokenYieldTokenStaticTokenAbstractTokenFinalTokenPrivateTokenProtectedTokenPublicTokenIncTokenDecTokenYieldFromTokenObjectOperatorTokenIntCastTokenDoubleCastTokenStringCastTokenArrayCastTokenObjectCastTokenBoolCastTokenUnsetCastTokenCoalesceTokenSpaceshipTokenPlusEqualTokenMinusEqualTokenMulEqualTokenPowEqualTokenDivEqualTokenConcatEqualTokenModEqualTokenAndEqualTokenOrEqualTokenXorEqualTokenSlEqualTokenSrEqualTokenBooleanOrTokenBooleanAndTokenPowTokenSlTokenSrTokenIsIdenticalTokenIsNotIdenticalTokenIsEqualTokenIsNotEqualTokenIsSmallerOrEqualTokenIsGreaterOrEqualTokenHaltCompilerTokenIdentifierTokenCaseSeparatorTokenDoubleQuoteTokenBackquoteTokenOpenCurlyBracesTokenCloseCurlyBracesTokenSemiColonTokenColonTokenOpenParenthesisTokenCloseParenthesisTokenOpenSquareBracketCloseSquareBracketQuestionMarkTokenAmpersandTokenMinusTokenPlusTokenExclamationMarkTokenTildeTokenAtTokenDollarTokenCommaTokenVerticalBarTokenEqualTokenCaretTokenAsteriskTokenSlashTokenPercentTokenLessTokenGreaterTokenDotToken" const _TokenName_name = "UnknownTokenNodeStartNodeEndMagicConstantTokenIncludeTokenIncludeOnceTokenExitTokenIfTokenLnumberTokenDnumberTokenStringTokenStringVarnameTokenVariableTokenNumStringTokenInlineHTMLTokenEncapsedAndWhitespaceTokenConstantEncapsedStringTokenEchoTokenDoTokenWhileTokenEndwhileTokenForInitSemicolonTokenForCondSemicolonTokenForTokenEndforTokenForeachTokenEndforeachTokenDeclareTokenEnddeclareTokenAsTokenSwitchTokenEndswitchTokenCaseTokenDefaultTokenBreakTokenContinueTokenGotoTokenFunctionTokenConstTokenReturnTokenTryTokenCatchTokenFinallyTokenThrowTokenUseTokenInsteadofTokenGlobalTokenVarTokenUnsetTokenIssetTokenEmptyTokenClassTokenTraitTokenInterfaceTokenExtendsTokenImplementsTokenDoubleArrowTokenListTokenArrayTokenCallableTokenStartHeredocTokenDollarOpenCurlyBracesTokenDollarCloseCurlyBracesTokenCurlyOpenTokenPaamayimNekudotayimTokenNamespaceTokenUseLeadingNsSeparatorTokenNsSeparatorTokenEllipsisTokenEvalTokenRequireTokenRequireOnceTokenLogicalOrTokenLogicalXorTokenLogicalAndTokenInstanceofTokenNewAnchorCloneTokenElseifTokenElseTokenEndifTokenPrintTokenYieldTokenStaticTokenAbstractTokenFinalTokenPrivateTokenProtectedTokenPublicTokenIncTokenDecTokenYieldFromTokenObjectOperatorTokenIntCastTokenDoubleCastTokenStringCastTokenArrayCastTokenObjectCastTokenBoolCastTokenUnsetCastTokenCoalesceTokenSpaceshipTokenPlusEqualTokenMinusEqualTokenMulEqualTokenPowEqualTokenDivEqualTokenConcatEqualTokenModEqualTokenAndEqualTokenOrEqualTokenXorEqualTokenSlEqualTokenSrEqualTokenBooleanOrTokenBooleanAndTokenPowTokenSlTokenSrTokenIsIdenticalTokenIsNotIdenticalTokenIsEqualTokenIsNotEqualTokenIsSmallerOrEqualTokenIsGreaterOrEqualTokenHaltCompilerTokenIdentifierTokenCaseSeparatorTokenDoubleQuoteTokenBackquoteTokenOpenCurlyBracesTokenCloseCurlyBracesTokenSemiColonTokenColonTokenOpenParenthesisTokenCloseParenthesisTokenOpenSquareBracketCloseSquareBracketQuestionMarkTokenAmpersandTokenMinusTokenPlusTokenExclamationMarkTokenTildeTokenAtTokenDollarTokenCommaTokenVerticalBarTokenEqualTokenCaretTokenAsteriskTokenSlashTokenPercentTokenLessTokenGreaterTokenDotToken"
var _TokenName_index = [...]uint16{0, 12, 21, 28, 46, 58, 74, 83, 90, 102, 114, 125, 143, 156, 170, 185, 211, 238, 247, 254, 264, 277, 298, 319, 327, 338, 350, 365, 377, 392, 399, 410, 430, 444, 453, 465, 475, 488, 497, 510, 520, 531, 539, 549, 561, 571, 579, 593, 604, 612, 622, 632, 642, 652, 662, 676, 688, 703, 719, 728, 738, 751, 768, 794, 808, 832, 846, 862, 875, 884, 896, 912, 926, 941, 956, 971, 979, 989, 1000, 1009, 1019, 1029, 1039, 1050, 1063, 1073, 1085, 1099, 1110, 1118, 1126, 1140, 1159, 1171, 1186, 1201, 1215, 1230, 1243, 1257, 1270, 1284, 1298, 1313, 1326, 1339, 1352, 1368, 1381, 1394, 1406, 1419, 1431, 1443, 1457, 1472, 1480, 1487, 1494, 1510, 1529, 1541, 1556, 1577, 1598, 1615, 1630, 1648, 1664, 1678, 1698, 1719, 1733, 1743, 1763, 1784, 1801, 1819, 1836, 1850, 1860, 1869, 1889, 1899, 1906, 1917, 1927, 1943, 1953, 1963, 1976, 1986, 1998, 2007, 2019, 2027} var _TokenName_index = [...]uint16{0, 12, 21, 28, 46, 58, 74, 83, 90, 102, 114, 125, 143, 156, 170, 185, 211, 238, 247, 254, 264, 277, 298, 319, 327, 338, 350, 365, 377, 392, 399, 410, 424, 433, 445, 455, 468, 477, 490, 500, 511, 519, 529, 541, 551, 559, 573, 584, 592, 602, 612, 622, 632, 642, 656, 668, 683, 699, 708, 718, 731, 748, 774, 801, 815, 839, 853, 879, 895, 908, 917, 929, 945, 959, 974, 989, 1004, 1013, 1023, 1034, 1043, 1053, 1063, 1073, 1084, 1097, 1107, 1119, 1133, 1144, 1152, 1160, 1174, 1193, 1205, 1220, 1235, 1249, 1264, 1277, 1291, 1304, 1318, 1332, 1347, 1360, 1373, 1386, 1402, 1415, 1428, 1440, 1453, 1465, 1477, 1491, 1506, 1514, 1521, 1528, 1544, 1563, 1575, 1590, 1611, 1632, 1649, 1664, 1682, 1698, 1712, 1732, 1753, 1767, 1777, 1797, 1818, 1835, 1853, 1870, 1884, 1894, 1903, 1923, 1933, 1940, 1951, 1961, 1977, 1987, 1997, 2010, 2020, 2032, 2041, 2053, 2061}
func (i TokenName) String() string { func (i TokenName) String() string {
if i < 0 || i >= TokenName(len(_TokenName_index)-1) { if i < 0 || i >= TokenName(len(_TokenName_index)-1) {

11
meta/type.go Normal file
View File

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

16
meta/type_string.go Normal file
View File

@ -0,0 +1,16 @@
// 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]]
}

29
meta/type_test.go Normal file
View File

@ -0,0 +1,29 @@
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,37 +0,0 @@
package meta
import (
"github.com/z7zmey/php-parser/position"
)
type WhiteSpace struct {
Value string
Position *position.Position
TokenName TokenName
}
func NewWhiteSpace(value string, pos *position.Position) *WhiteSpace {
return &WhiteSpace{
Value: value,
Position: pos,
TokenName: UnknownToken,
}
}
// SetTokenName sets token name
func (c *WhiteSpace) SetTokenName(tokenName TokenName) {
c.TokenName = tokenName
}
// GetTokenName returns token name
func (c *WhiteSpace) GetTokenName() TokenName {
return c.TokenName
}
func (el *WhiteSpace) String() string {
return el.Value
}
func (el *WhiteSpace) GetPosition() *position.Position {
return el.Position
}

View File

@ -1,44 +0,0 @@
package meta_test
import (
"testing"
"github.com/z7zmey/php-parser/position"
"github.com/z7zmey/php-parser/meta"
)
func TestWhiteSpacePrint(t *testing.T) {
expected := "\n "
w := meta.NewWhiteSpace(expected, nil)
actual := w.String()
if expected != actual {
t.Errorf("expected and actual are not equal\n")
}
}
func TestWhiteSpaceSetGetTokenName(t *testing.T) {
expected := meta.ArrayToken
w := meta.NewWhiteSpace("\n ", nil)
w.SetTokenName(expected)
actual := w.GetTokenName()
if expected != actual {
t.Errorf("expected and actual are not equal\n")
}
}
func TestWhiteSpaceGetPosition(t *testing.T) {
expected := position.NewPosition(1, 1, 1, 1)
q := meta.NewWhiteSpace("\n ", expected)
actual := q.GetPosition()
if expected != actual {
t.Errorf("expected and actual are not equal\n")
}
}

View File

@ -9,7 +9,7 @@ import (
// Assign node // Assign node
type Assign struct { type Assign struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Assign) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Assign) AddMeta(m []meta.Meta) { func (n *Assign) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Assign) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Reference node // Reference node
type Reference struct { type Reference struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Reference) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Reference) AddMeta(m []meta.Meta) { func (n *Reference) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Reference) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BitwiseAnd node // BitwiseAnd node
type BitwiseAnd struct { type BitwiseAnd struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *BitwiseAnd) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseAnd) AddMeta(m []meta.Meta) { func (n *BitwiseAnd) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BitwiseAnd) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BitwiseOr node // BitwiseOr node
type BitwiseOr struct { type BitwiseOr struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *BitwiseOr) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseOr) AddMeta(m []meta.Meta) { func (n *BitwiseOr) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BitwiseOr) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BitwiseXor node // BitwiseXor node
type BitwiseXor struct { type BitwiseXor struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *BitwiseXor) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseXor) AddMeta(m []meta.Meta) { func (n *BitwiseXor) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BitwiseXor) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Concat node // Concat node
type Concat struct { type Concat struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Concat) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Concat) AddMeta(m []meta.Meta) { func (n *Concat) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Concat) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Div node // Div node
type Div struct { type Div struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Div) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Div) AddMeta(m []meta.Meta) { func (n *Div) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Div) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Minus node // Minus node
type Minus struct { type Minus struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Minus) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Minus) AddMeta(m []meta.Meta) { func (n *Minus) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Minus) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Mod node // Mod node
type Mod struct { type Mod struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Mod) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Mod) AddMeta(m []meta.Meta) { func (n *Mod) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Mod) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Mul node // Mul node
type Mul struct { type Mul struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Mul) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Mul) AddMeta(m []meta.Meta) { func (n *Mul) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Mul) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Plus node // Plus node
type Plus struct { type Plus struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Plus) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Plus) AddMeta(m []meta.Meta) { func (n *Plus) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Plus) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Pow node // Pow node
type Pow struct { type Pow struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *Pow) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Pow) AddMeta(m []meta.Meta) { func (n *Pow) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Pow) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ShiftLeft node // ShiftLeft node
type ShiftLeft struct { type ShiftLeft struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *ShiftLeft) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShiftLeft) AddMeta(m []meta.Meta) { func (n *ShiftLeft) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ShiftLeft) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ShiftRight node // ShiftRight node
type ShiftRight struct { type ShiftRight struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Expression node.Node Expression node.Node
@ -33,12 +33,8 @@ func (n *ShiftRight) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShiftRight) AddMeta(m []meta.Meta) { func (n *ShiftRight) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ShiftRight) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -29,12 +29,20 @@ var nodes = []node.Node{
} }
func TestMeta(t *testing.T) { func TestMeta(t *testing.T) {
expected := []meta.Meta{ expected := &meta.Collection{
meta.NewComment("//comment\n", nil), &meta.Data{
meta.NewWhiteSpace(" ", nil), Value: "//comment\n",
Type: meta.CommentType,
Position: nil,
},
&meta.Data{
Value: " ",
Type: meta.WhiteSpaceType,
Position: nil,
},
} }
for _, n := range nodes { for _, n := range nodes {
n.AddMeta(expected) n.GetMeta().Push(*expected...)
actual := n.GetMeta() actual := n.GetMeta()
assertEqual(t, expected, actual) assertEqual(t, expected, actual)
} }

View File

@ -9,7 +9,7 @@ import (
// BitwiseAnd node // BitwiseAnd node
type BitwiseAnd struct { type BitwiseAnd struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *BitwiseAnd) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseAnd) AddMeta(m []meta.Meta) { func (n *BitwiseAnd) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BitwiseAnd) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BitwiseOr node // BitwiseOr node
type BitwiseOr struct { type BitwiseOr struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *BitwiseOr) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseOr) AddMeta(m []meta.Meta) { func (n *BitwiseOr) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BitwiseOr) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BitwiseXor node // BitwiseXor node
type BitwiseXor struct { type BitwiseXor struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *BitwiseXor) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseXor) AddMeta(m []meta.Meta) { func (n *BitwiseXor) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BitwiseXor) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BooleanAnd node // BooleanAnd node
type BooleanAnd struct { type BooleanAnd struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *BooleanAnd) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BooleanAnd) AddMeta(m []meta.Meta) { func (n *BooleanAnd) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BooleanAnd) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BooleanOr node // BooleanOr node
type BooleanOr struct { type BooleanOr struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *BooleanOr) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BooleanOr) AddMeta(m []meta.Meta) { func (n *BooleanOr) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BooleanOr) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Coalesce node // Coalesce node
type Coalesce struct { type Coalesce struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Coalesce) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Coalesce) AddMeta(m []meta.Meta) { func (n *Coalesce) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Coalesce) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Concat node // Concat node
type Concat struct { type Concat struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Concat) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Concat) AddMeta(m []meta.Meta) { func (n *Concat) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Concat) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Div node // Div node
type Div struct { type Div struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Div) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Div) AddMeta(m []meta.Meta) { func (n *Div) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Div) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Equal node // Equal node
type Equal struct { type Equal struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Equal) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Equal) AddMeta(m []meta.Meta) { func (n *Equal) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Equal) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Greater node // Greater node
type Greater struct { type Greater struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Greater) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Greater) AddMeta(m []meta.Meta) { func (n *Greater) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Greater) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// GreaterOrEqual node // GreaterOrEqual node
type GreaterOrEqual struct { type GreaterOrEqual struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *GreaterOrEqual) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *GreaterOrEqual) AddMeta(m []meta.Meta) { func (n *GreaterOrEqual) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *GreaterOrEqual) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Identical node // Identical node
type Identical struct { type Identical struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Identical) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Identical) AddMeta(m []meta.Meta) { func (n *Identical) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Identical) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// LogicalAnd node // LogicalAnd node
type LogicalAnd struct { type LogicalAnd struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *LogicalAnd) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *LogicalAnd) AddMeta(m []meta.Meta) { func (n *LogicalAnd) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *LogicalAnd) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// LogicalOr node // LogicalOr node
type LogicalOr struct { type LogicalOr struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *LogicalOr) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *LogicalOr) AddMeta(m []meta.Meta) { func (n *LogicalOr) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *LogicalOr) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// LogicalXor node // LogicalXor node
type LogicalXor struct { type LogicalXor struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *LogicalXor) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *LogicalXor) AddMeta(m []meta.Meta) { func (n *LogicalXor) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *LogicalXor) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Minus node // Minus node
type Minus struct { type Minus struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Minus) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Minus) AddMeta(m []meta.Meta) { func (n *Minus) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Minus) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Mod node // Mod node
type Mod struct { type Mod struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Mod) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Mod) AddMeta(m []meta.Meta) { func (n *Mod) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Mod) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Mul node // Mul node
type Mul struct { type Mul struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Mul) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Mul) AddMeta(m []meta.Meta) { func (n *Mul) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Mul) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// NotEqual node // NotEqual node
type NotEqual struct { type NotEqual struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *NotEqual) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *NotEqual) AddMeta(m []meta.Meta) { func (n *NotEqual) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *NotEqual) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// NotIdentical node // NotIdentical node
type NotIdentical struct { type NotIdentical struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *NotIdentical) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *NotIdentical) AddMeta(m []meta.Meta) { func (n *NotIdentical) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *NotIdentical) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Plus node // Plus node
type Plus struct { type Plus struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Plus) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Plus) AddMeta(m []meta.Meta) { func (n *Plus) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Plus) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Pow node // Pow node
type Pow struct { type Pow struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Pow) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Pow) AddMeta(m []meta.Meta) { func (n *Pow) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Pow) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ShiftLeft node // ShiftLeft node
type ShiftLeft struct { type ShiftLeft struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *ShiftLeft) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShiftLeft) AddMeta(m []meta.Meta) { func (n *ShiftLeft) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ShiftLeft) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ShiftRight node // ShiftRight node
type ShiftRight struct { type ShiftRight struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *ShiftRight) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShiftRight) AddMeta(m []meta.Meta) { func (n *ShiftRight) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ShiftRight) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Smaller node // Smaller node
type Smaller struct { type Smaller struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Smaller) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Smaller) AddMeta(m []meta.Meta) { func (n *Smaller) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Smaller) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// SmallerOrEqual node // SmallerOrEqual node
type SmallerOrEqual struct { type SmallerOrEqual struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *SmallerOrEqual) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *SmallerOrEqual) AddMeta(m []meta.Meta) { func (n *SmallerOrEqual) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *SmallerOrEqual) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Spaceship node // Spaceship node
type Spaceship struct { type Spaceship struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Left node.Node Left node.Node
Right node.Node Right node.Node
@ -33,12 +33,8 @@ func (n *Spaceship) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Spaceship) AddMeta(m []meta.Meta) { func (n *Spaceship) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Spaceship) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -41,12 +41,20 @@ var nodes = []node.Node{
} }
func TestMeta(t *testing.T) { func TestMeta(t *testing.T) {
expected := []meta.Meta{ expected := &meta.Collection{
meta.NewComment("//comment\n", nil), &meta.Data{
meta.NewWhiteSpace(" ", nil), Value: "//comment\n",
Type: meta.CommentType,
Position: nil,
},
&meta.Data{
Value: " ",
Type: meta.WhiteSpaceType,
Position: nil,
},
} }
for _, n := range nodes { for _, n := range nodes {
n.AddMeta(expected) n.GetMeta().Push(*expected...)
actual := n.GetMeta() actual := n.GetMeta()
assertEqual(t, expected, actual) assertEqual(t, expected, actual)
} }

View File

@ -9,7 +9,7 @@ import (
// Array node // Array node
type Array struct { type Array struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Array) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Array) AddMeta(m []meta.Meta) { func (n *Array) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Array) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Bool node // Bool node
type Bool struct { type Bool struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Bool) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Bool) AddMeta(m []meta.Meta) { func (n *Bool) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Bool) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Double node // Double node
type Double struct { type Double struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Double) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Double) AddMeta(m []meta.Meta) { func (n *Double) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Double) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Int node // Int node
type Int struct { type Int struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Int) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Int) AddMeta(m []meta.Meta) { func (n *Int) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Int) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Object node // Object node
type Object struct { type Object struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Object) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Object) AddMeta(m []meta.Meta) { func (n *Object) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Object) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// String node // String node
type String struct { type String struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *String) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *String) AddMeta(m []meta.Meta) { func (n *String) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *String) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Unset node // Unset node
type Unset struct { type Unset struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Unset) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Unset) AddMeta(m []meta.Meta) { func (n *Unset) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Unset) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -21,12 +21,20 @@ var nodes = []node.Node{
} }
func TestMeta(t *testing.T) { func TestMeta(t *testing.T) {
expected := []meta.Meta{ expected := &meta.Collection{
meta.NewComment("//comment\n", nil), &meta.Data{
meta.NewWhiteSpace(" ", nil), Value: "//comment\n",
Type: meta.CommentType,
Position: nil,
},
&meta.Data{
Value: " ",
Type: meta.WhiteSpaceType,
Position: nil,
},
} }
for _, n := range nodes { for _, n := range nodes {
n.AddMeta(expected) n.GetMeta().Push(*expected...)
actual := n.GetMeta() actual := n.GetMeta()
assertEqual(t, expected, actual) assertEqual(t, expected, actual)
} }

View File

@ -9,7 +9,7 @@ import (
// Array node // Array node
type Array struct { type Array struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Items []node.Node Items []node.Node
} }
@ -31,12 +31,8 @@ func (n *Array) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Array) AddMeta(m []meta.Meta) { func (n *Array) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Array) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ArrayDimFetch node // ArrayDimFetch node
type ArrayDimFetch struct { type ArrayDimFetch struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Dim node.Node Dim node.Node
@ -33,12 +33,8 @@ func (n *ArrayDimFetch) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ArrayDimFetch) AddMeta(m []meta.Meta) { func (n *ArrayDimFetch) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ArrayDimFetch) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ArrayItem node // ArrayItem node
type ArrayItem struct { type ArrayItem struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Key node.Node Key node.Node
Val node.Node Val node.Node
@ -33,12 +33,8 @@ func (n *ArrayItem) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ArrayItem) AddMeta(m []meta.Meta) { func (n *ArrayItem) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ArrayItem) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BitwiseNot node // BitwiseNot node
type BitwiseNot struct { type BitwiseNot struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *BitwiseNot) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BitwiseNot) AddMeta(m []meta.Meta) { func (n *BitwiseNot) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BitwiseNot) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// BooleanNot node // BooleanNot node
type BooleanNot struct { type BooleanNot struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *BooleanNot) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *BooleanNot) AddMeta(m []meta.Meta) { func (n *BooleanNot) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *BooleanNot) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ClassConstFetch node // ClassConstFetch node
type ClassConstFetch struct { type ClassConstFetch struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Class node.Node Class node.Node
ConstantName node.Node ConstantName node.Node
@ -33,12 +33,8 @@ func (n *ClassConstFetch) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ClassConstFetch) AddMeta(m []meta.Meta) { func (n *ClassConstFetch) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ClassConstFetch) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Clone node // Clone node
type Clone struct { type Clone struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Clone) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Clone) AddMeta(m []meta.Meta) { func (n *Clone) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Clone) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Closure node // Closure node
type Closure struct { type Closure struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
ReturnsRef bool ReturnsRef bool
Static bool Static bool
@ -43,12 +43,8 @@ func (n *Closure) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Closure) AddMeta(m []meta.Meta) { func (n *Closure) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Closure) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ClosureUse node // ClosureUse node
type ClosureUse struct { type ClosureUse struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Uses []node.Node Uses []node.Node
} }
@ -31,12 +31,8 @@ func (n *ClosureUse) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ClosureUse) AddMeta(m []meta.Meta) { func (n *ClosureUse) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ClosureUse) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ConstFetch node // ConstFetch node
type ConstFetch struct { type ConstFetch struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Constant node.Node Constant node.Node
} }
@ -31,12 +31,8 @@ func (n *ConstFetch) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ConstFetch) AddMeta(m []meta.Meta) { func (n *ConstFetch) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ConstFetch) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Empty node // Empty node
type Empty struct { type Empty struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Empty) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Empty) AddMeta(m []meta.Meta) { func (n *Empty) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Empty) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ErrorSuppress node // ErrorSuppress node
type ErrorSuppress struct { type ErrorSuppress struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *ErrorSuppress) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ErrorSuppress) AddMeta(m []meta.Meta) { func (n *ErrorSuppress) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ErrorSuppress) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Eval node // Eval node
type Eval struct { type Eval struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Eval) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Eval) AddMeta(m []meta.Meta) { func (n *Eval) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Eval) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Exit node // Exit node
type Exit struct { type Exit struct {
Meta []meta.Meta Meta meta.Collection
Die bool Die bool
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
@ -32,12 +32,8 @@ func (n *Exit) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Exit) AddMeta(m []meta.Meta) { func (n *Exit) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Exit) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// FunctionCall node // FunctionCall node
type FunctionCall struct { type FunctionCall struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Function node.Node Function node.Node
ArgumentList *node.ArgumentList ArgumentList *node.ArgumentList
@ -33,12 +33,8 @@ func (n *FunctionCall) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *FunctionCall) AddMeta(m []meta.Meta) { func (n *FunctionCall) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *FunctionCall) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Include node // Include node
type Include struct { type Include struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Include) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Include) AddMeta(m []meta.Meta) { func (n *Include) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Include) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// IncludeOnce node // IncludeOnce node
type IncludeOnce struct { type IncludeOnce struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *IncludeOnce) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *IncludeOnce) AddMeta(m []meta.Meta) { func (n *IncludeOnce) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *IncludeOnce) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// InstanceOf node // InstanceOf node
type InstanceOf struct { type InstanceOf struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
Class node.Node Class node.Node
@ -33,12 +33,8 @@ func (n *InstanceOf) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *InstanceOf) AddMeta(m []meta.Meta) { func (n *InstanceOf) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *InstanceOf) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Isset node // Isset node
type Isset struct { type Isset struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variables []node.Node Variables []node.Node
} }
@ -31,12 +31,8 @@ func (n *Isset) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Isset) AddMeta(m []meta.Meta) { func (n *Isset) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Isset) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// List node // List node
type List struct { type List struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Items []node.Node Items []node.Node
} }
@ -31,12 +31,8 @@ func (n *List) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *List) AddMeta(m []meta.Meta) { func (n *List) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *List) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// MethodCall node // MethodCall node
type MethodCall struct { type MethodCall struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Method node.Node Method node.Node
@ -35,12 +35,8 @@ func (n *MethodCall) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *MethodCall) AddMeta(m []meta.Meta) { func (n *MethodCall) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *MethodCall) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// New node // New node
type New struct { type New struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Class node.Node Class node.Node
ArgumentList *node.ArgumentList ArgumentList *node.ArgumentList
@ -33,12 +33,8 @@ func (n *New) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *New) AddMeta(m []meta.Meta) { func (n *New) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *New) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// PostDec node // PostDec node
type PostDec struct { type PostDec struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
} }
@ -31,12 +31,8 @@ func (n *PostDec) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *PostDec) AddMeta(m []meta.Meta) { func (n *PostDec) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *PostDec) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// PostInc node // PostInc node
type PostInc struct { type PostInc struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
} }
@ -31,12 +31,8 @@ func (n *PostInc) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *PostInc) AddMeta(m []meta.Meta) { func (n *PostInc) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *PostInc) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// PreDec node // PreDec node
type PreDec struct { type PreDec struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
} }
@ -31,12 +31,8 @@ func (n *PreDec) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *PreDec) AddMeta(m []meta.Meta) { func (n *PreDec) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *PreDec) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// PreInc node // PreInc node
type PreInc struct { type PreInc struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
} }
@ -31,12 +31,8 @@ func (n *PreInc) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *PreInc) AddMeta(m []meta.Meta) { func (n *PreInc) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *PreInc) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Print node // Print node
type Print struct { type Print struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Print) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Print) AddMeta(m []meta.Meta) { func (n *Print) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Print) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// PropertyFetch node // PropertyFetch node
type PropertyFetch struct { type PropertyFetch struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
Property node.Node Property node.Node
@ -33,12 +33,8 @@ func (n *PropertyFetch) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *PropertyFetch) AddMeta(m []meta.Meta) { func (n *PropertyFetch) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *PropertyFetch) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Reference node // Reference node
type Reference struct { type Reference struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Variable node.Node Variable node.Node
} }
@ -31,12 +31,8 @@ func (n *Reference) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Reference) AddMeta(m []meta.Meta) { func (n *Reference) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Reference) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// Require node // Require node
type Require struct { type Require struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *Require) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *Require) AddMeta(m []meta.Meta) { func (n *Require) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *Require) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// RequireOnce node // RequireOnce node
type RequireOnce struct { type RequireOnce struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Expr node.Node Expr node.Node
} }
@ -31,12 +31,8 @@ func (n *RequireOnce) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *RequireOnce) AddMeta(m []meta.Meta) { func (n *RequireOnce) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *RequireOnce) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ShellExec node // ShellExec node
type ShellExec struct { type ShellExec struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Parts []node.Node Parts []node.Node
} }
@ -31,12 +31,8 @@ func (n *ShellExec) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShellExec) AddMeta(m []meta.Meta) { func (n *ShellExec) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ShellExec) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ShortArray node // ShortArray node
type ShortArray struct { type ShortArray struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Items []node.Node Items []node.Node
} }
@ -31,12 +31,8 @@ func (n *ShortArray) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShortArray) AddMeta(m []meta.Meta) { func (n *ShortArray) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ShortArray) GetMeta() []meta.Meta {
return n.Meta
} }
// Attributes returns node attributes as map // Attributes returns node attributes as map

View File

@ -9,7 +9,7 @@ import (
// ShortList node // ShortList node
type ShortList struct { type ShortList struct {
Meta []meta.Meta Meta meta.Collection
Position *position.Position Position *position.Position
Items []node.Node Items []node.Node
} }
@ -31,12 +31,8 @@ func (n *ShortList) GetPosition() *position.Position {
return n.Position return n.Position
} }
func (n *ShortList) AddMeta(m []meta.Meta) { func (n *ShortList) GetMeta() *meta.Collection {
n.Meta = append(n.Meta, m...) return &n.Meta
}
func (n *ShortList) GetMeta() []meta.Meta {
return n.Meta
} }
// 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