xref: /aosp_15_r20/external/dagger2/javatests/dagger/functional/kotlinsrc/cycle/LongCycle.kt (revision f585d8a307d0621d6060bd7e80091fdcbf94fe27)
1 /*
2  * Copyright (C) 2022 The Dagger Authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package dagger.functional.kotlinsrc.cycle
18 
19 import dagger.Component
20 import javax.inject.Inject
21 import javax.inject.Provider
22 
23 /**
24  * Component with a long enough cycle such that the initialization of a provider happens in a
25  * separate `initialize` method from the one where it is used as a delegated factory.
26  *
27  * @see [http://b/23579213](http://b/23579213)
28  */
29 // Each nested class's constructor has an intentionally unused parameter.
30 @Suppress("UNUSED_PARAMETER")
31 class LongCycle private constructor() {
32   class Class1 @Inject constructor(class2: Class2)
33   class Class2 @Inject constructor(class3: Class3)
34   class Class3 @Inject constructor(class4: Class4)
35   class Class4 @Inject constructor(class5: Class5)
36   class Class5 @Inject constructor(class6: Class6)
37   class Class6 @Inject constructor(class7: Class7)
38   class Class7 @Inject constructor(class8: Class8)
39   class Class8 @Inject constructor(class9: Class9)
40   class Class9 @Inject constructor(class10: Class10)
41   class Class10 @Inject constructor(class11: Class11)
42   class Class11 @Inject constructor(class12: Class12)
43   class Class12 @Inject constructor(class13: Class13)
44   class Class13 @Inject constructor(class14: Class14)
45   class Class14 @Inject constructor(class15: Class15)
46   class Class15 @Inject constructor(class16: Class16)
47   class Class16 @Inject constructor(class17: Class17)
48   class Class17 @Inject constructor(class18: Class18)
49   class Class18 @Inject constructor(class19: Class19)
50   class Class19 @Inject constructor(class20: Class20)
51   class Class20 @Inject constructor(class21: Class21)
52   class Class21 @Inject constructor(class22: Class22)
53   class Class22 @Inject constructor(class23: Class23)
54   class Class23 @Inject constructor(class24: Class24)
55   class Class24 @Inject constructor(class25: Class25)
56   class Class25 @Inject constructor(class26: Class26)
57   class Class26 @Inject constructor(class27: Class27)
58   class Class27 @Inject constructor(class28: Class28)
59   class Class28 @Inject constructor(class29: Class29)
60   class Class29 @Inject constructor(class30: Class30)
61   class Class30 @Inject constructor(class31: Class31)
62   class Class31 @Inject constructor(class32: Class32)
63   class Class32 @Inject constructor(class33: Class33)
64   class Class33 @Inject constructor(class34: Class34)
65   class Class34 @Inject constructor(class35: Class35)
66   class Class35 @Inject constructor(class36: Class36)
67   class Class36 @Inject constructor(class37: Class37)
68   class Class37 @Inject constructor(class38: Class38)
69   class Class38 @Inject constructor(class39: Class39)
70   class Class39 @Inject constructor(class40: Class40)
71   class Class40 @Inject constructor(class41: Class41)
72   class Class41 @Inject constructor(class42: Class42)
73   class Class42 @Inject constructor(class43: Class43)
74   class Class43 @Inject constructor(class44: Class44)
75   class Class44 @Inject constructor(class45: Class45)
76   class Class45 @Inject constructor(class46: Class46)
77   class Class46 @Inject constructor(class47: Class47)
78   class Class47 @Inject constructor(class48: Class48)
79   class Class48 @Inject constructor(class49: Class49)
80   class Class49 @Inject constructor(class50: Class50)
81   class Class50 @Inject constructor(class51: Class51)
82   class Class51 @Inject constructor(class52: Class52)
83   class Class52 @Inject constructor(class53: Class53)
84   class Class53 @Inject constructor(class54: Class54)
85   class Class54 @Inject constructor(class55: Class55)
86   class Class55 @Inject constructor(class56: Class56)
87   class Class56 @Inject constructor(class57: Class57)
88   class Class57 @Inject constructor(class58: Class58)
89   class Class58 @Inject constructor(class59: Class59)
90   class Class59 @Inject constructor(class60: Class60)
91   class Class60 @Inject constructor(class61: Class61)
92   class Class61 @Inject constructor(class62: Class62)
93   class Class62 @Inject constructor(class63: Class63)
94   class Class63 @Inject constructor(class64: Class64)
95   class Class64 @Inject constructor(class65: Class65)
96   class Class65 @Inject constructor(class66: Class66)
97   class Class66 @Inject constructor(class67: Class67)
98   class Class67 @Inject constructor(class68: Class68)
99   class Class68 @Inject constructor(class69: Class69)
100   class Class69 @Inject constructor(class70: Class70)
101   class Class70 @Inject constructor(class71: Class71)
102   class Class71 @Inject constructor(class72: Class72)
103   class Class72 @Inject constructor(class73: Class73)
104   class Class73 @Inject constructor(class74: Class74)
105   class Class74 @Inject constructor(class75: Class75)
106   class Class75 @Inject constructor(class76: Class76)
107   class Class76 @Inject constructor(class77: Class77)
108   class Class77 @Inject constructor(class78: Class78)
109   class Class78 @Inject constructor(class79: Class79)
110   class Class79 @Inject constructor(class80: Class80)
111   class Class80 @Inject constructor(class81: Class81)
112   class Class81 @Inject constructor(class82: Class82)
113   class Class82 @Inject constructor(class83: Class83)
114   class Class83 @Inject constructor(class84: Class84)
115   class Class84 @Inject constructor(class85: Class85)
116   class Class85 @Inject constructor(class86: Class86)
117   class Class86 @Inject constructor(class87: Class87)
118   class Class87 @Inject constructor(class88: Class88)
119   class Class88 @Inject constructor(class89: Class89)
120   class Class89 @Inject constructor(class90: Class90)
121   class Class90 @Inject constructor(class91: Class91)
122   class Class91 @Inject constructor(class92: Class92)
123   class Class92 @Inject constructor(class93: Class93)
124   class Class93 @Inject constructor(class94: Class94)
125   class Class94 @Inject constructor(class95: Class95)
126   class Class95 @Inject constructor(class96: Class96)
127   class Class96 @Inject constructor(class97: Class97)
128   class Class97 @Inject constructor(class98: Class98)
129   class Class98 @Inject constructor(class99: Class99)
130   class Class99 @Inject constructor(class100: Class100)
131   class Class100 @Inject constructor(class101: Class101)
132   class Class101 @Inject constructor(class1Provider: Provider<Class1>)
133 
134   @Component
135   interface LongCycleComponent {
class1null136     fun class1(): Class1
137   }
138 }
139