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