|
|
|
/*
|
|
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*/
|
|
|
|
// makes it easier to mock graphql types
|
|
|
|
package com.facebook.graphql.model;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
abstract class A {
|
|
|
|
abstract A getA();
|
|
|
|
|
|
|
|
abstract B getB();
|
|
|
|
|
|
|
|
abstract C getC();
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class B {
|
|
|
|
abstract C getC();
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class C {
|
|
|
|
abstract D getD();
|
|
|
|
}
|
|
|
|
|
|
|
|
class D {}
|
|
|
|
|
|
|
|
abstract class GraphQLStory {
|
|
|
|
|
|
|
|
public abstract List getActors();
|
|
|
|
}
|
|
|
|
|
|
|
|
class LithoTest {
|
|
|
|
|
|
|
|
void /*basic chain*/ onCreateLayout(A a) {
|
|
|
|
a.getB().getC().getD();
|
|
|
|
}
|
|
|
|
|
|
|
|
void /*sibling chain*/ onCreateLayout(A a, int i) {
|
|
|
|
a.getB().getC().getD();
|
|
|
|
a.getC().getD();
|
|
|
|
}
|
|
|
|
|
|
|
|
void /*split chain*/ onCreateLayout(A a, int i1, int i2) {
|
|
|
|
B b = a.getB();
|
|
|
|
C c = b.getC();
|
|
|
|
c.getD();
|
|
|
|
}
|
|
|
|
|
|
|
|
void chainFromActual1(B b) {
|
|
|
|
b.getC().getD();
|
|
|
|
}
|
|
|
|
|
|
|
|
void chainFromActual2(C c) {
|
|
|
|
c.getD();
|
|
|
|
}
|
|
|
|
|
|
|
|
void /*chain rooted in actual*/ onCreateLayout(A a, boolean b) {
|
|
|
|
chainFromActual1(a.getB());
|
|
|
|
}
|
|
|
|
|
|
|
|
void /*local chain + interproc chain*/ onCreateLayout(A a, char ch) {
|
|
|
|
C c = a.getB().getC();
|
|
|
|
chainFromActual2(c);
|
|
|
|
}
|
|
|
|
|
|
|
|
// conditional getters
|
|
|
|
static GraphQLStory getPrimaryActor(GraphQLStory story) {
|
|
|
|
List actors = story.getActors();
|
|
|
|
return actors != null && actors.size() > 0 ? (GraphQLStory) actors.get(0) : null;
|
|
|
|
}
|
|
|
|
|
|
|
|
void /*conditional getters on formal*/ onCreateLayout(GraphQLStory story) {
|
|
|
|
getPrimaryActor(story).toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
static native GraphQLStory getStory();
|
|
|
|
|
|
|
|
void /*conditional getters on local*/ onCreateLayout() {
|
|
|
|
GraphQLStory story = getStory();
|
|
|
|
getPrimaryActor(story).toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
void /*cycle*/ onCreateLayout(A a, float f) {
|
|
|
|
a = a.getA();
|
|
|
|
}
|
|
|
|
|
|
|
|
void cycle(A a) {
|
|
|
|
a = a.getA();
|
|
|
|
}
|
|
|
|
|
|
|
|
void /*interprocedural cycle*/ onCreateLayout(A a, double d) {
|
|
|
|
cycle(a);
|
|
|
|
}
|
|
|
|
}
|