Dmytro Serdiuk
03/11/2024, 12:17 PMPropagation by resolution tracing: Resolving a type reference (implicitly or explicitly) is the only way to navigate from one file to another. When a type reference is resolved by a processor, a changed or affected file that contains a change that may potentially affect the resolution result will affect the file containing that reference.
May I ask to explain with details or give some example?
ThanksDmytro Serdiuk
03/11/2024, 12:27 PMTing-Yuan Huang
03/11/2024, 5:39 PMgivenFunction
. This (file that contains the given) function is the root of the navigation and we associate it with the output
. When this processor resolves references of the return type, e.g., givenFunction.returnType?.resolve()
, KSP associates the class definitions of the resolved type with the output
as well.
Processors' outputs depend on their inputs. In the above example, when the class definition of the returnType
changes, the processor may observe the change and potentially produce something differently. Therefore a change in returnType
needs to trigger re-processing of all files / elements required for output
in the incremental build.Dmytro Serdiuk
03/11/2024, 5:48 PM"A dirty file is either directly changed by users or indirectly affected by other dirty files."
so I didn’t get why this “resolution tracking” is something standalone?
thank you!Ting-Yuan Huang
03/11/2024, 6:02 PMgivenFunction
need not to be changed to be considered dirty. In this example, the dirtiness is propagated from the class definition of the return type.Dmytro Serdiuk
03/11/2024, 6:03 PM