Android Extensions: analyze layout XMLs lazily

This commit is contained in:
Yan Zhulanow
2018-11-01 16:12:24 +09:00
parent 12a05e0006
commit 6f8d44750a
2 changed files with 5 additions and 4 deletions
@@ -38,7 +38,7 @@ class AndroidSyntheticPackageData(
val moduleData: AndroidModuleData,
val forView: Boolean,
val isDeprecated: Boolean,
val resources: List<AndroidResource>)
val lazyResources: () -> List<AndroidResource>)
class AndroidSyntheticPackageFragmentDescriptor(
module: ModuleDescriptor,
@@ -62,7 +62,7 @@ class AndroidSyntheticPackageFragmentDescriptor(
val fragmentTypes = context.fragmentTypes
val properties = ArrayList<PropertyDescriptor>(0)
for (resource in packageData.resources) {
for (resource in packageData.lazyResources()) {
when (resource) {
is AndroidResource.Widget -> {
val resolvedWidget = resource.resolve(module)
@@ -62,8 +62,9 @@ abstract class AndroidPackageFragmentProviderExtension : PackageFragmentProvider
for (variantData in moduleData.variants) {
for ((layoutName, layouts) in variantData.layouts) {
fun createPackageFragment(fqName: String, forView: Boolean, isDeprecated: Boolean = false) {
val resources = layoutXmlFileManager.extractResources(AndroidLayoutGroupData(layoutName, layouts), module)
val packageData = AndroidSyntheticPackageData(moduleData, forView, isDeprecated, resources)
val packageData = AndroidSyntheticPackageData(moduleData, forView, isDeprecated) {
layoutXmlFileManager.extractResources(AndroidLayoutGroupData(layoutName, layouts), module)
}
val packageDescriptor = AndroidSyntheticPackageFragmentDescriptor(
module, FqName(fqName), packageData, lazyContext, storageManager, isExperimental,
lookupTracker, layoutName