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

Commit 3ac7db80 authored by Cole Faust's avatar Cole Faust
Browse files

Optimize isAncestor

Remove string copies.

Test: go test (there are existing visibility tests)
Change-Id: I575dcd8497527da03f88003ff0805f3d1271983e
parent 2b4bc2fd
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -155,7 +155,11 @@ func (r subpackagesRule) matches(m qualifiedModuleName) bool {
}

func isAncestor(p1 string, p2 string) bool {
	return strings.HasPrefix(p2+"/", p1+"/")
	// Equivalent to strings.HasPrefix(p2+"/", p1+"/"), but without the string copies
	// The check for a trailing slash is so that we don't consider sibling
	// directories with common prefixes to be ancestors, e.g. "fooo/bar" should not be
	// a descendant of "foo".
	return strings.HasPrefix(p2, p1) && (len(p2) == len(p1) || p2[len(p1)] == '/')
}

func (r subpackagesRule) String() string {