Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aebccc73 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Fix End() of Rule" into main

parents fc4607a4 e9cc4035
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ type Rule struct {
	Prerequisites *MakeString
	RecipePos     Pos
	Recipe        string
	RecipeEndPos  Pos
}

func (x *Rule) Dump() string {
@@ -95,7 +96,7 @@ func (x *Rule) Dump() string {
}

func (x *Rule) Pos() Pos { return x.Target.Pos() }
func (x *Rule) End() Pos { return Pos(int(x.RecipePos) + len(x.Recipe)) }
func (x *Rule) End() Pos { return x.RecipeEndPos }

type Variable struct {
	Name *MakeString
+1 −0
Original line number Diff line number Diff line
@@ -448,6 +448,7 @@ loop:
			Prerequisites: prerequisites,
			Recipe:        recipe,
			RecipePos:     recipePos,
			RecipeEndPos:  p.pos(),
		})
	}
}
+22 −0
Original line number Diff line number Diff line
@@ -124,3 +124,25 @@ func TestParse(t *testing.T) {
		})
	}
}

func TestRuleEnd(t *testing.T) {
	name := "ruleEndTest"
	in := `all:
ifeq (A, A)
	echo foo
	echo foo
	echo foo
	echo foo
endif
	echo bar
`
	p := NewParser(name, bytes.NewBufferString(in))
	got, errs := p.Parse()
	if len(errs) != 0 {
		t.Fatalf("Unexpected errors while parsing: %v", errs)
	}

	if got[0].End() < got[len(got) -1].Pos() {
		t.Errorf("Rule's end (%d) is smaller than directive that inside of rule's start (%v)\n", got[0].End(), got[len(got) -1].Pos())
	}
}