From 6f8d44750a96d92fabd3db028a6c7ebcfadaa8f8 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 1 Nov 2018 16:12:24 +0900 Subject: [PATCH] Android Extensions: analyze layout XMLs lazily --- .../descriptors/AndroidSyntheticPackageFragmentDescriptor.kt | 4 ++-- .../synthetic/res/AndroidPackageFragmentProviderExtension.kt | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/descriptors/AndroidSyntheticPackageFragmentDescriptor.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/descriptors/AndroidSyntheticPackageFragmentDescriptor.kt index a126dd8e83d..79661e88f3c 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/descriptors/AndroidSyntheticPackageFragmentDescriptor.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/descriptors/AndroidSyntheticPackageFragmentDescriptor.kt @@ -38,7 +38,7 @@ class AndroidSyntheticPackageData( val moduleData: AndroidModuleData, val forView: Boolean, val isDeprecated: Boolean, - val resources: List) + val lazyResources: () -> List) class AndroidSyntheticPackageFragmentDescriptor( module: ModuleDescriptor, @@ -62,7 +62,7 @@ class AndroidSyntheticPackageFragmentDescriptor( val fragmentTypes = context.fragmentTypes val properties = ArrayList(0) - for (resource in packageData.resources) { + for (resource in packageData.lazyResources()) { when (resource) { is AndroidResource.Widget -> { val resolvedWidget = resource.resolve(module) diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/res/AndroidPackageFragmentProviderExtension.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/res/AndroidPackageFragmentProviderExtension.kt index e544a2567da..f1153659c49 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/res/AndroidPackageFragmentProviderExtension.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/res/AndroidPackageFragmentProviderExtension.kt @@ -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