summaryrefslogtreecommitdiff
path: root/java/java.go
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2021-02-18 13:54:27 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2021-02-18 13:54:27 +0000
commitca52bfcf0fb0459884b597ab166e43be8335785b (patch)
tree1c45f7c96a8d1f26ccb348b303a6df66479d97da /java/java.go
parent4941e4b9d110a6012436e6c9a38bb06e7aab14c7 (diff)
parent7f87e1ab49dcbf9a2399b1fb1b21a143c4eee0aa (diff)
Merge "Further simplify the link type check routine"
Diffstat (limited to 'java/java.go')
-rw-r--r--java/java.go36
1 files changed, 8 insertions, 28 deletions
diff --git a/java/java.go b/java/java.go
index ecd0589fa..dbfad029b 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1014,6 +1014,7 @@ type linkType int
const (
// TODO(jiyong) rename these for better readability. Make the allowed
// and disallowed link types explicit
+ // order is important here. See rank()
javaCore linkType = iota
javaSdk
javaSystem
@@ -1041,6 +1042,12 @@ func (lt linkType) String() string {
}
}
+// rank determins the total order among linkTypes. A link type of rank A can link to another link
+// type of rank B only when B <= A
+func (lt linkType) rank() int {
+ return int(lt)
+}
+
type linkTypeContext interface {
android.Module
getLinkType(name string) (ret linkType, stubs bool)
@@ -1101,34 +1108,7 @@ func checkLinkType(ctx android.ModuleContext, from *Module, to linkTypeContext,
}
otherLinkType, _ := to.getLinkType(ctx.OtherModuleName(to))
- violation := false
- switch myLinkType {
- case javaCore:
- if otherLinkType != javaCore {
- violation = true
- }
- case javaSdk:
- if otherLinkType != javaCore && otherLinkType != javaSdk {
- violation = true
- }
- case javaSystem:
- if otherLinkType == javaPlatform || otherLinkType == javaModule || otherLinkType == javaSystemServer {
- violation = true
- }
- case javaModule:
- if otherLinkType == javaPlatform || otherLinkType == javaSystemServer {
- violation = true
- }
- case javaSystemServer:
- if otherLinkType == javaPlatform {
- violation = true
- }
- case javaPlatform:
- // no restriction on link-type
- break
- }
-
- if violation {
+ if myLinkType.rank() < otherLinkType.rank() {
ctx.ModuleErrorf("compiles against %v, but dependency %q is compiling against %v. "+
"In order to fix this, consider adjusting sdk_version: OR platform_apis: "+
"property of the source or target module so that target module is built "+