diff --git a/packages/core/test/bundling/forms/BUILD.bazel b/packages/core/test/bundling/forms/BUILD.bazel
new file mode 100644
index 0000000000..5c0930c0d9
--- /dev/null
+++ b/packages/core/test/bundling/forms/BUILD.bazel
@@ -0,0 +1,85 @@
+package(default_visibility = ["//visibility:public"])
+
+load("//tools:defaults.bzl", "jasmine_node_test", "ng_module", "ng_rollup_bundle", "ts_library")
+load("//tools/symbol-extractor:index.bzl", "js_expected_symbol_test")
+load("@npm//http-server:index.bzl", "http_server")
+
+ng_module(
+ name = "forms",
+ srcs = ["index.ts"],
+ tags = [
+ "ivy-only",
+ ],
+ deps = [
+ "//packages/core",
+ "//packages/forms",
+ "//packages/platform-browser",
+ ],
+)
+
+ng_rollup_bundle(
+ name = "bundle",
+ entry_point = ":index.ts",
+ tags = [
+ "ivy-only",
+ ],
+ deps = [
+ ":forms",
+ "//packages/core",
+ "//packages/forms",
+ "//packages/platform-browser",
+ "@npm//rxjs",
+ ],
+)
+
+ts_library(
+ name = "test_lib",
+ testonly = True,
+ srcs = glob(["*_spec.ts"]),
+ tags = [
+ "ivy-only",
+ ],
+ deps = [
+ "//packages:types",
+ "//packages/compiler",
+ "//packages/core",
+ "//packages/core/testing",
+ "//packages/private/testing",
+ ],
+)
+
+jasmine_node_test(
+ name = "test",
+ data = [
+ ":bundle.js",
+ ":bundle.min.js",
+ ":bundle.min.js.br",
+ ":bundle.min_debug.js",
+ ],
+ tags = [
+ "ivy-only",
+ ],
+ deps = [":test_lib"],
+)
+
+js_expected_symbol_test(
+ name = "symbol_test",
+ src = ":bundle.min_debug.js",
+ golden = ":bundle.golden_symbols.json",
+ tags = [
+ "ivy-aot",
+ "ivy-only",
+ ],
+)
+
+http_server(
+ name = "prodserver",
+ data = [
+ "index.html",
+ ":bundle.min.js",
+ ":bundle.min_debug.js",
+ ],
+ tags = [
+ "ivy-only",
+ ],
+)
diff --git a/packages/core/test/bundling/forms/bundle.golden_symbols.json b/packages/core/test/bundling/forms/bundle.golden_symbols.json
new file mode 100644
index 0000000000..85063ccff6
--- /dev/null
+++ b/packages/core/test/bundling/forms/bundle.golden_symbols.json
@@ -0,0 +1,1736 @@
+[
+ {
+ "name": "ALLOW_MULTIPLE_PLATFORMS"
+ },
+ {
+ "name": "APPLICATION_MODULE_PROVIDERS"
+ },
+ {
+ "name": "APP_BOOTSTRAP_LISTENER"
+ },
+ {
+ "name": "APP_ID"
+ },
+ {
+ "name": "APP_ID_RANDOM_PROVIDER"
+ },
+ {
+ "name": "APP_INITIALIZER"
+ },
+ {
+ "name": "AbstractControl"
+ },
+ {
+ "name": "AbstractControlDirective"
+ },
+ {
+ "name": "AbstractControlStatus"
+ },
+ {
+ "name": "AbstractFormGroupDirective"
+ },
+ {
+ "name": "AnonymousSubject"
+ },
+ {
+ "name": "ApplicationInitStatus"
+ },
+ {
+ "name": "ApplicationModule"
+ },
+ {
+ "name": "ApplicationRef"
+ },
+ {
+ "name": "BROWSER_MODULE_PROVIDERS"
+ },
+ {
+ "name": "BUILTIN_ACCESSORS"
+ },
+ {
+ "name": "BrowserDomAdapter"
+ },
+ {
+ "name": "BrowserGetTestability"
+ },
+ {
+ "name": "BrowserModule"
+ },
+ {
+ "name": "CHECKBOX_VALUE_ACCESSOR"
+ },
+ {
+ "name": "CIRCULAR"
+ },
+ {
+ "name": "CLEAN_PROMISE"
+ },
+ {
+ "name": "COMPONENT_REGEX"
+ },
+ {
+ "name": "COMPOSITION_BUFFER_MODE"
+ },
+ {
+ "name": "ChangeDetectionStrategy"
+ },
+ {
+ "name": "CheckboxControlValueAccessor"
+ },
+ {
+ "name": "CommonModule"
+ },
+ {
+ "name": "Compiler"
+ },
+ {
+ "name": "Compiler_compileModuleAndAllComponentsAsync"
+ },
+ {
+ "name": "Compiler_compileModuleAndAllComponentsSync"
+ },
+ {
+ "name": "Compiler_compileModuleAndAllComponentsSync__POST_R3__"
+ },
+ {
+ "name": "Compiler_compileModuleAsync"
+ },
+ {
+ "name": "Compiler_compileModuleSync"
+ },
+ {
+ "name": "Compiler_compileModuleSync__POST_R3__"
+ },
+ {
+ "name": "ComponentFactory"
+ },
+ {
+ "name": "ComponentFactory"
+ },
+ {
+ "name": "ComponentFactoryResolver"
+ },
+ {
+ "name": "ComponentFactoryResolver"
+ },
+ {
+ "name": "ComponentRef"
+ },
+ {
+ "name": "ConnectableObservable"
+ },
+ {
+ "name": "ConnectableSubscriber"
+ },
+ {
+ "name": "Console"
+ },
+ {
+ "name": "ControlContainer"
+ },
+ {
+ "name": "DEFAULT_CURRENCY_CODE"
+ },
+ {
+ "name": "DEFAULT_VALUE_ACCESSOR"
+ },
+ {
+ "name": "DOCUMENT"
+ },
+ {
+ "name": "DOCUMENT"
+ },
+ {
+ "name": "DefaultDomRenderer2"
+ },
+ {
+ "name": "DefaultIterableDiffer"
+ },
+ {
+ "name": "DefaultIterableDifferFactory"
+ },
+ {
+ "name": "DefaultKeyValueDiffer"
+ },
+ {
+ "name": "DefaultKeyValueDifferFactory"
+ },
+ {
+ "name": "DefaultValueAccessor"
+ },
+ {
+ "name": "DomEventsPlugin"
+ },
+ {
+ "name": "DomRendererFactory2"
+ },
+ {
+ "name": "DomSharedStylesHost"
+ },
+ {
+ "name": "EMAIL_REGEXP"
+ },
+ {
+ "name": "EMPTY_ARRAY"
+ },
+ {
+ "name": "EMPTY_ARRAY"
+ },
+ {
+ "name": "EMPTY_ARRAY"
+ },
+ {
+ "name": "EMPTY_OBJ"
+ },
+ {
+ "name": "EMPTY_PAYLOAD"
+ },
+ {
+ "name": "EVENT_MANAGER_PLUGINS"
+ },
+ {
+ "name": "ElementRef"
+ },
+ {
+ "name": "EmulatedEncapsulationDomRenderer2"
+ },
+ {
+ "name": "ErrorHandler"
+ },
+ {
+ "name": "EventEmitter"
+ },
+ {
+ "name": "EventManager"
+ },
+ {
+ "name": "EventManagerPlugin"
+ },
+ {
+ "name": "FormArray"
+ },
+ {
+ "name": "FormArrayName"
+ },
+ {
+ "name": "FormBuilder"
+ },
+ {
+ "name": "FormControl"
+ },
+ {
+ "name": "FormControlName"
+ },
+ {
+ "name": "FormErrorExamples_formControlName"
+ },
+ {
+ "name": "FormErrorExamples_formGroupName"
+ },
+ {
+ "name": "FormErrorExamples_ngModelGroup"
+ },
+ {
+ "name": "FormGroup"
+ },
+ {
+ "name": "FormGroupDirective"
+ },
+ {
+ "name": "FormGroupName"
+ },
+ {
+ "name": "FormsExampleModule"
+ },
+ {
+ "name": "FormsModule"
+ },
+ {
+ "name": "INJECTOR"
+ },
+ {
+ "name": "INJECTOR_IMPL"
+ },
+ {
+ "name": "INJECTOR_SCOPE"
+ },
+ {
+ "name": "Inject"
+ },
+ {
+ "name": "InjectFlags"
+ },
+ {
+ "name": "InjectionToken"
+ },
+ {
+ "name": "Injector"
+ },
+ {
+ "name": "InnerSubscriber"
+ },
+ {
+ "name": "IterableChangeRecord_"
+ },
+ {
+ "name": "IterableDiffers"
+ },
+ {
+ "name": "KeyEventsPlugin"
+ },
+ {
+ "name": "KeyValueChangeRecord_"
+ },
+ {
+ "name": "KeyValueDiffers"
+ },
+ {
+ "name": "LOCALE_DATA"
+ },
+ {
+ "name": "LOCALE_ID"
+ },
+ {
+ "name": "LOCALE_ID"
+ },
+ {
+ "name": "LifecycleHooksFeature"
+ },
+ {
+ "name": "LocaleDataIndex"
+ },
+ {
+ "name": "MODIFIER_KEYS"
+ },
+ {
+ "name": "MODIFIER_KEY_GETTERS"
+ },
+ {
+ "name": "MapOperator"
+ },
+ {
+ "name": "MapSubscriber"
+ },
+ {
+ "name": "MergeMapOperator"
+ },
+ {
+ "name": "MergeMapSubscriber"
+ },
+ {
+ "name": "ModuleWithComponentFactories"
+ },
+ {
+ "name": "NAMESPACE_URIS"
+ },
+ {
+ "name": "NEW_LINE"
+ },
+ {
+ "name": "NG_ASYNC_VALIDATORS"
+ },
+ {
+ "name": "NG_COMP_DEF"
+ },
+ {
+ "name": "NG_DIR_DEF"
+ },
+ {
+ "name": "NG_ELEMENT_ID"
+ },
+ {
+ "name": "NG_FACTORY_DEF"
+ },
+ {
+ "name": "NG_INJECTABLE_DEF"
+ },
+ {
+ "name": "NG_INJECTOR_DEF"
+ },
+ {
+ "name": "NG_INJ_DEF"
+ },
+ {
+ "name": "NG_LOC_ID_DEF"
+ },
+ {
+ "name": "NG_MODEL_WITH_FORM_CONTROL_WARNING"
+ },
+ {
+ "name": "NG_MOD_DEF"
+ },
+ {
+ "name": "NG_PIPE_DEF"
+ },
+ {
+ "name": "NG_PROV_DEF"
+ },
+ {
+ "name": "NG_PROV_DEF_FALLBACK"
+ },
+ {
+ "name": "NG_VALIDATORS"
+ },
+ {
+ "name": "NG_VALUE_ACCESSOR"
+ },
+ {
+ "name": "NOT_FOUND"
+ },
+ {
+ "name": "NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR"
+ },
+ {
+ "name": "NOT_YET"
+ },
+ {
+ "name": "NO_CHANGE"
+ },
+ {
+ "name": "NULL_INJECTOR"
+ },
+ {
+ "name": "NUMBER_VALUE_ACCESSOR"
+ },
+ {
+ "name": "NgControl"
+ },
+ {
+ "name": "NgControlStatus"
+ },
+ {
+ "name": "NgControlStatusGroup"
+ },
+ {
+ "name": "NgForOf"
+ },
+ {
+ "name": "NgForOfContext"
+ },
+ {
+ "name": "NgForm"
+ },
+ {
+ "name": "NgLocaleLocalization"
+ },
+ {
+ "name": "NgLocalization"
+ },
+ {
+ "name": "NgModel"
+ },
+ {
+ "name": "NgModelGroup"
+ },
+ {
+ "name": "NgModuleFactory"
+ },
+ {
+ "name": "NgModuleRef"
+ },
+ {
+ "name": "NgModuleRef"
+ },
+ {
+ "name": "NgOnChangesFeatureImpl"
+ },
+ {
+ "name": "NgZone"
+ },
+ {
+ "name": "NodeInjector"
+ },
+ {
+ "name": "NodeInjectorFactory"
+ },
+ {
+ "name": "NoopNgZone"
+ },
+ {
+ "name": "NullInjector"
+ },
+ {
+ "name": "NumberValueAccessor"
+ },
+ {
+ "name": "ObjectUnsubscribedError"
+ },
+ {
+ "name": "Observable"
+ },
+ {
+ "name": "Optional"
+ },
+ {
+ "name": "OuterSubscriber"
+ },
+ {
+ "name": "PLATFORM_ID"
+ },
+ {
+ "name": "PLATFORM_INITIALIZER"
+ },
+ {
+ "name": "PlatformRef"
+ },
+ {
+ "name": "Plural"
+ },
+ {
+ "name": "R3Injector"
+ },
+ {
+ "name": "RADIO_VALUE_ACCESSOR"
+ },
+ {
+ "name": "RANGE_VALUE_ACCESSOR"
+ },
+ {
+ "name": "REQUIRED_VALIDATOR"
+ },
+ {
+ "name": "RadioControlRegistry"
+ },
+ {
+ "name": "RadioControlValueAccessor"
+ },
+ {
+ "name": "RangeValueAccessor"
+ },
+ {
+ "name": "ReactiveErrors"
+ },
+ {
+ "name": "ReactiveFormsComponent"
+ },
+ {
+ "name": "ReactiveFormsComponent_div_14_Template"
+ },
+ {
+ "name": "ReactiveFormsModule"
+ },
+ {
+ "name": "RecordViewTuple"
+ },
+ {
+ "name": "RefCountOperator"
+ },
+ {
+ "name": "RefCountSubscriber"
+ },
+ {
+ "name": "Renderer2"
+ },
+ {
+ "name": "RendererFactory2"
+ },
+ {
+ "name": "RendererStyleFlags2"
+ },
+ {
+ "name": "RequiredValidator"
+ },
+ {
+ "name": "RootComponent"
+ },
+ {
+ "name": "RootViewRef"
+ },
+ {
+ "name": "SCHEDULER"
+ },
+ {
+ "name": "SELECT_MULTIPLE_VALUE_ACCESSOR"
+ },
+ {
+ "name": "SELECT_VALUE_ACCESSOR"
+ },
+ {
+ "name": "SERVER_TRANSITION_PROVIDERS"
+ },
+ {
+ "name": "SWITCH_ELEMENT_REF_FACTORY"
+ },
+ {
+ "name": "SWITCH_RENDERER2_FACTORY"
+ },
+ {
+ "name": "SWITCH_TEMPLATE_REF_FACTORY"
+ },
+ {
+ "name": "SWITCH_VIEW_CONTAINER_REF_FACTORY"
+ },
+ {
+ "name": "SafeSubscriber"
+ },
+ {
+ "name": "Sanitizer"
+ },
+ {
+ "name": "SelectControlValueAccessor"
+ },
+ {
+ "name": "SelectMultipleControlValueAccessor"
+ },
+ {
+ "name": "Self"
+ },
+ {
+ "name": "ShadowDomRenderer"
+ },
+ {
+ "name": "SharedStylesHost"
+ },
+ {
+ "name": "SimpleChange"
+ },
+ {
+ "name": "SkipSelf"
+ },
+ {
+ "name": "Subject"
+ },
+ {
+ "name": "SubjectSubscriber"
+ },
+ {
+ "name": "SubjectSubscription"
+ },
+ {
+ "name": "Subscriber"
+ },
+ {
+ "name": "Subscription"
+ },
+ {
+ "name": "THROW_IF_NOT_FOUND"
+ },
+ {
+ "name": "TRANSITION_ID"
+ },
+ {
+ "name": "TemplateDrivenErrors"
+ },
+ {
+ "name": "TemplateFormsComponent"
+ },
+ {
+ "name": "TemplateFormsComponent_div_14_Template"
+ },
+ {
+ "name": "TemplateRef"
+ },
+ {
+ "name": "Testability"
+ },
+ {
+ "name": "TestabilityRegistry"
+ },
+ {
+ "name": "USE_VALUE"
+ },
+ {
+ "name": "UnsubscriptionError"
+ },
+ {
+ "name": "VERSION"
+ },
+ {
+ "name": "Validators"
+ },
+ {
+ "name": "Version"
+ },
+ {
+ "name": "ViewContainerRef"
+ },
+ {
+ "name": "ViewEncapsulation"
+ },
+ {
+ "name": "ViewRef"
+ },
+ {
+ "name": "_DOM"
+ },
+ {
+ "name": "_DuplicateItemRecordList"
+ },
+ {
+ "name": "_DuplicateMap"
+ },
+ {
+ "name": "_NoopGetTestability"
+ },
+ {
+ "name": "_NullComponentFactoryResolver"
+ },
+ {
+ "name": "__extends"
+ },
+ {
+ "name": "__forward_ref__"
+ },
+ {
+ "name": "__global"
+ },
+ {
+ "name": "__globalThis"
+ },
+ {
+ "name": "__self"
+ },
+ {
+ "name": "__window"
+ },
+ {
+ "name": "_chromeNumKeyPadMap"
+ },
+ {
+ "name": "_currentInjector"
+ },
+ {
+ "name": "_enable_super_gross_mode_that_will_cause_bad_things"
+ },
+ {
+ "name": "_global"
+ },
+ {
+ "name": "_hasInvalidParent"
+ },
+ {
+ "name": "_keyMap"
+ },
+ {
+ "name": "_mergeErrors"
+ },
+ {
+ "name": "_noControlError"
+ },
+ {
+ "name": "_randomChar"
+ },
+ {
+ "name": "_renderCompCount"
+ },
+ {
+ "name": "_symbolIterator"
+ },
+ {
+ "name": "_testabilityGetter"
+ },
+ {
+ "name": "_throwError"
+ },
+ {
+ "name": "addComponentLogic"
+ },
+ {
+ "name": "addHostBindingsToExpandoInstructions"
+ },
+ {
+ "name": "addRemoveViewFromContainer"
+ },
+ {
+ "name": "addToArray"
+ },
+ {
+ "name": "addToViewTree"
+ },
+ {
+ "name": "allocLFrame"
+ },
+ {
+ "name": "appendChild"
+ },
+ {
+ "name": "applyNodes"
+ },
+ {
+ "name": "applyProjectionRecursive"
+ },
+ {
+ "name": "applyToElementOrContainer"
+ },
+ {
+ "name": "applyView"
+ },
+ {
+ "name": "attachPatchData"
+ },
+ {
+ "name": "autoRegisterModuleById"
+ },
+ {
+ "name": "baseElement"
+ },
+ {
+ "name": "baseResolveDirective"
+ },
+ {
+ "name": "bindingUpdated"
+ },
+ {
+ "name": "bloomHasToken"
+ },
+ {
+ "name": "callHook"
+ },
+ {
+ "name": "callHooks"
+ },
+ {
+ "name": "checkStable"
+ },
+ {
+ "name": "classIndexOf"
+ },
+ {
+ "name": "cleanUpView"
+ },
+ {
+ "name": "coerceToAsyncValidator"
+ },
+ {
+ "name": "coerceToValidator"
+ },
+ {
+ "name": "collectStylingFromDirectives"
+ },
+ {
+ "name": "collectStylingFromTAttrs"
+ },
+ {
+ "name": "composeAsyncValidators"
+ },
+ {
+ "name": "composeValidators"
+ },
+ {
+ "name": "computeStaticStyling"
+ },
+ {
+ "name": "concatStringsWithSpace"
+ },
+ {
+ "name": "config"
+ },
+ {
+ "name": "connectableObservableDescriptor"
+ },
+ {
+ "name": "controlNameBinding"
+ },
+ {
+ "name": "controlPath"
+ },
+ {
+ "name": "createDirectivesInstances"
+ },
+ {
+ "name": "createElementRef"
+ },
+ {
+ "name": "createInjectorWithoutInjectorInstances"
+ },
+ {
+ "name": "createLContainer"
+ },
+ {
+ "name": "createLFrame"
+ },
+ {
+ "name": "createLView"
+ },
+ {
+ "name": "createPlatformFactory"
+ },
+ {
+ "name": "createTNode"
+ },
+ {
+ "name": "createTView"
+ },
+ {
+ "name": "decoratePreventDefault"
+ },
+ {
+ "name": "deepForEach"
+ },
+ {
+ "name": "defaultErrorLogger"
+ },
+ {
+ "name": "defaultIterableDiffers"
+ },
+ {
+ "name": "defaultKeyValueDiffers"
+ },
+ {
+ "name": "defaultScheduler"
+ },
+ {
+ "name": "destroyLView"
+ },
+ {
+ "name": "detachMovedView"
+ },
+ {
+ "name": "detachView"
+ },
+ {
+ "name": "detectChangesInRootView"
+ },
+ {
+ "name": "detectChangesInternal"
+ },
+ {
+ "name": "diPublicInInjector"
+ },
+ {
+ "name": "domRendererFactory3"
+ },
+ {
+ "name": "elementCreate"
+ },
+ {
+ "name": "empty"
+ },
+ {
+ "name": "enterDI"
+ },
+ {
+ "name": "enterView"
+ },
+ {
+ "name": "executeCheckHooks"
+ },
+ {
+ "name": "executeInitAndCheckHooks"
+ },
+ {
+ "name": "executeListenerWithErrorHandling"
+ },
+ {
+ "name": "executeTemplate"
+ },
+ {
+ "name": "executeViewQueryFn"
+ },
+ {
+ "name": "extendStatics"
+ },
+ {
+ "name": "extractDirectiveDef"
+ },
+ {
+ "name": "extractPipeDef"
+ },
+ {
+ "name": "fillProperties"
+ },
+ {
+ "name": "findAttrIndexInNode"
+ },
+ {
+ "name": "findStylingValue"
+ },
+ {
+ "name": "flattenStyles"
+ },
+ {
+ "name": "flattenUnsubscriptionErrors"
+ },
+ {
+ "name": "forkJoinInternal"
+ },
+ {
+ "name": "formArrayNameProvider"
+ },
+ {
+ "name": "formControlBinding"
+ },
+ {
+ "name": "formDirectiveProvider"
+ },
+ {
+ "name": "formDirectiveProvider"
+ },
+ {
+ "name": "formGroupNameProvider"
+ },
+ {
+ "name": "forwardRef"
+ },
+ {
+ "name": "from"
+ },
+ {
+ "name": "fromArray"
+ },
+ {
+ "name": "generateExpandoInstructionBlock"
+ },
+ {
+ "name": "generateInitialInputs"
+ },
+ {
+ "name": "generatePropertyAliases"
+ },
+ {
+ "name": "getBeforeNodeForView"
+ },
+ {
+ "name": "getCheckNoChangesMode"
+ },
+ {
+ "name": "getClosureSafeProperty"
+ },
+ {
+ "name": "getComponentDef"
+ },
+ {
+ "name": "getComponentLViewByIndex"
+ },
+ {
+ "name": "getConstant"
+ },
+ {
+ "name": "getContainerRenderParent"
+ },
+ {
+ "name": "getDOM"
+ },
+ {
+ "name": "getDebugContext"
+ },
+ {
+ "name": "getFactoryDef"
+ },
+ {
+ "name": "getFirstLContainer"
+ },
+ {
+ "name": "getInjectableDef"
+ },
+ {
+ "name": "getInjectorDef"
+ },
+ {
+ "name": "getInjectorIndex"
+ },
+ {
+ "name": "getIsParent"
+ },
+ {
+ "name": "getLCleanup"
+ },
+ {
+ "name": "getLContainer"
+ },
+ {
+ "name": "getLView"
+ },
+ {
+ "name": "getLViewParent"
+ },
+ {
+ "name": "getLocaleData"
+ },
+ {
+ "name": "getNativeByTNode"
+ },
+ {
+ "name": "getNearestLContainer"
+ },
+ {
+ "name": "getNextLContainer"
+ },
+ {
+ "name": "getNgModuleDef"
+ },
+ {
+ "name": "getNodeInjectable"
+ },
+ {
+ "name": "getNullInjector"
+ },
+ {
+ "name": "getOrCreateInjectable"
+ },
+ {
+ "name": "getOrCreateNodeInjectorForNode"
+ },
+ {
+ "name": "getOrCreateTComponentView"
+ },
+ {
+ "name": "getOrCreateTNode"
+ },
+ {
+ "name": "getOriginalError"
+ },
+ {
+ "name": "getOwnDefinition"
+ },
+ {
+ "name": "getParentInjectorIndex"
+ },
+ {
+ "name": "getParentInjectorLocation"
+ },
+ {
+ "name": "getParentInjectorView"
+ },
+ {
+ "name": "getParentInjectorViewOffset"
+ },
+ {
+ "name": "getParentState"
+ },
+ {
+ "name": "getPlatform"
+ },
+ {
+ "name": "getPreviousIndex"
+ },
+ {
+ "name": "getPreviousOrParentTNode"
+ },
+ {
+ "name": "getPromiseCtor"
+ },
+ {
+ "name": "getSelectedIndex"
+ },
+ {
+ "name": "getSelectedTNode"
+ },
+ {
+ "name": "getSimpleChangesStore"
+ },
+ {
+ "name": "getSymbolIterator"
+ },
+ {
+ "name": "getSymbolIterator"
+ },
+ {
+ "name": "getTNode"
+ },
+ {
+ "name": "getTStylingRangeNext"
+ },
+ {
+ "name": "getTStylingRangePrev"
+ },
+ {
+ "name": "getTView"
+ },
+ {
+ "name": "growHostVarsSpace"
+ },
+ {
+ "name": "handleError"
+ },
+ {
+ "name": "hasParentInjector"
+ },
+ {
+ "name": "hasTagAndTypeMatch"
+ },
+ {
+ "name": "hasValidLength"
+ },
+ {
+ "name": "hostReportError"
+ },
+ {
+ "name": "identity"
+ },
+ {
+ "name": "includeViewProviders"
+ },
+ {
+ "name": "incrementInitPhaseFlags"
+ },
+ {
+ "name": "indexOf"
+ },
+ {
+ "name": "inheritContentQueries"
+ },
+ {
+ "name": "inheritHostBindings"
+ },
+ {
+ "name": "inheritViewQuery"
+ },
+ {
+ "name": "initTNodeFlags"
+ },
+ {
+ "name": "injectArgs"
+ },
+ {
+ "name": "injectInjectorOnly"
+ },
+ {
+ "name": "injectRootLimpMode"
+ },
+ {
+ "name": "injectableDefOrInjectorDefFactory"
+ },
+ {
+ "name": "insertBloom"
+ },
+ {
+ "name": "instructionState"
+ },
+ {
+ "name": "invertObject"
+ },
+ {
+ "name": "invokeHostBindingsInCreationMode"
+ },
+ {
+ "name": "isAnimationProp"
+ },
+ {
+ "name": "isArray"
+ },
+ {
+ "name": "isArrayLike"
+ },
+ {
+ "name": "isComponentDef"
+ },
+ {
+ "name": "isComponentHost"
+ },
+ {
+ "name": "isContentQueryHost"
+ },
+ {
+ "name": "isCssClassMatching"
+ },
+ {
+ "name": "isDirectiveHost"
+ },
+ {
+ "name": "isEmptyInputValue"
+ },
+ {
+ "name": "isForwardRef"
+ },
+ {
+ "name": "isFunction"
+ },
+ {
+ "name": "isInlineTemplate"
+ },
+ {
+ "name": "isJsObject"
+ },
+ {
+ "name": "isLContainer"
+ },
+ {
+ "name": "isLView"
+ },
+ {
+ "name": "isListLikeIterable"
+ },
+ {
+ "name": "isNodeMatchingSelector"
+ },
+ {
+ "name": "isNodeMatchingSelectorList"
+ },
+ {
+ "name": "isObject"
+ },
+ {
+ "name": "isOptionsObj"
+ },
+ {
+ "name": "isPositive"
+ },
+ {
+ "name": "isPresent"
+ },
+ {
+ "name": "isProceduralRenderer"
+ },
+ {
+ "name": "isPromise"
+ },
+ {
+ "name": "isPromise"
+ },
+ {
+ "name": "isPropertyUpdated"
+ },
+ {
+ "name": "isRootView"
+ },
+ {
+ "name": "isScheduler"
+ },
+ {
+ "name": "isStylingMatch"
+ },
+ {
+ "name": "isStylingValuePresent"
+ },
+ {
+ "name": "isTypeProvider"
+ },
+ {
+ "name": "isValueProvider"
+ },
+ {
+ "name": "iterator"
+ },
+ {
+ "name": "keyValDiff"
+ },
+ {
+ "name": "keyValueArrayGet"
+ },
+ {
+ "name": "keyValueArrayIndexOf"
+ },
+ {
+ "name": "keyValueArraySet"
+ },
+ {
+ "name": "leaveDI"
+ },
+ {
+ "name": "leaveView"
+ },
+ {
+ "name": "leaveViewLight"
+ },
+ {
+ "name": "localeEn"
+ },
+ {
+ "name": "makeParamDecorator"
+ },
+ {
+ "name": "makeRecord"
+ },
+ {
+ "name": "map"
+ },
+ {
+ "name": "markAsComponentHost"
+ },
+ {
+ "name": "markDuplicates"
+ },
+ {
+ "name": "markViewDirty"
+ },
+ {
+ "name": "maybeUnwrapEmpty"
+ },
+ {
+ "name": "maybeUnwrapFn"
+ },
+ {
+ "name": "maybeWrapInNotSelector"
+ },
+ {
+ "name": "mergeAll"
+ },
+ {
+ "name": "mergeHostAttribute"
+ },
+ {
+ "name": "mergeHostAttrs"
+ },
+ {
+ "name": "modelGroupProvider"
+ },
+ {
+ "name": "modules"
+ },
+ {
+ "name": "multiFactoryAdd"
+ },
+ {
+ "name": "multiProvidersFactoryResolver"
+ },
+ {
+ "name": "multiResolve"
+ },
+ {
+ "name": "multiViewProvidersFactoryResolver"
+ },
+ {
+ "name": "nativeAppendChild"
+ },
+ {
+ "name": "nativeAppendOrInsertBefore"
+ },
+ {
+ "name": "nativeInsertBefore"
+ },
+ {
+ "name": "nativeParentNode"
+ },
+ {
+ "name": "nextBindingIndex"
+ },
+ {
+ "name": "nextNgElementId"
+ },
+ {
+ "name": "ngOnChangesSetInput"
+ },
+ {
+ "name": "noSideEffects"
+ },
+ {
+ "name": "noop"
+ },
+ {
+ "name": "noop"
+ },
+ {
+ "name": "normalizeAsyncValidator"
+ },
+ {
+ "name": "normalizeValidator"
+ },
+ {
+ "name": "observable"
+ },
+ {
+ "name": "onEnter"
+ },
+ {
+ "name": "onLeave"
+ },
+ {
+ "name": "optionsReducer"
+ },
+ {
+ "name": "pickAsyncValidators"
+ },
+ {
+ "name": "pickValidators"
+ },
+ {
+ "name": "pipeFromArray"
+ },
+ {
+ "name": "platformBrowser"
+ },
+ {
+ "name": "platformCore"
+ },
+ {
+ "name": "promise"
+ },
+ {
+ "name": "providerToFactory"
+ },
+ {
+ "name": "readPatchedLView"
+ },
+ {
+ "name": "refCount"
+ },
+ {
+ "name": "refreshComponent"
+ },
+ {
+ "name": "refreshContentQueries"
+ },
+ {
+ "name": "refreshView"
+ },
+ {
+ "name": "registerDestroyHooksIfSupported"
+ },
+ {
+ "name": "registerPostOrderHooks"
+ },
+ {
+ "name": "rememberChangeHistoryAndInvokeOnChangesHook"
+ },
+ {
+ "name": "remove"
+ },
+ {
+ "name": "removeDir"
+ },
+ {
+ "name": "removeFromArray"
+ },
+ {
+ "name": "renderComponent"
+ },
+ {
+ "name": "renderComponentOrTemplate"
+ },
+ {
+ "name": "renderStringify"
+ },
+ {
+ "name": "renderView"
+ },
+ {
+ "name": "resetPreOrderHookFlags"
+ },
+ {
+ "name": "resolveDirectives"
+ },
+ {
+ "name": "resolveForwardRef"
+ },
+ {
+ "name": "resolveProvider"
+ },
+ {
+ "name": "resolvedPromise"
+ },
+ {
+ "name": "resolvedPromise"
+ },
+ {
+ "name": "rxSubscriber"
+ },
+ {
+ "name": "saveNameToExportMap"
+ },
+ {
+ "name": "saveResolvedLocalsInData"
+ },
+ {
+ "name": "scheduleArray"
+ },
+ {
+ "name": "scheduleMicroTask"
+ },
+ {
+ "name": "searchTokensOnInjector"
+ },
+ {
+ "name": "selectIndexInternal"
+ },
+ {
+ "name": "selectValueAccessor"
+ },
+ {
+ "name": "setBindingRootForHostBindings"
+ },
+ {
+ "name": "setCheckNoChangesMode"
+ },
+ {
+ "name": "setCurrentDirectiveIndex"
+ },
+ {
+ "name": "setCurrentInjector"
+ },
+ {
+ "name": "setCurrentQueryIndex"
+ },
+ {
+ "name": "setDirectiveInputsWhichShadowsStyling"
+ },
+ {
+ "name": "setIncludeViewProviders"
+ },
+ {
+ "name": "setInjectImplementation"
+ },
+ {
+ "name": "setInputsForProperty"
+ },
+ {
+ "name": "setInputsFromAttrs"
+ },
+ {
+ "name": "setLocaleId"
+ },
+ {
+ "name": "setPreviousOrParentTNode"
+ },
+ {
+ "name": "setSelectedIndex"
+ },
+ {
+ "name": "setTStylingRangeNext"
+ },
+ {
+ "name": "setTStylingRangeNextDuplicate"
+ },
+ {
+ "name": "setTStylingRangePrevDuplicate"
+ },
+ {
+ "name": "setUpAttributes"
+ },
+ {
+ "name": "setUpControl"
+ },
+ {
+ "name": "setUpFormContainer"
+ },
+ {
+ "name": "shareSubjectFactory"
+ },
+ {
+ "name": "shouldSearchParent"
+ },
+ {
+ "name": "stringify"
+ },
+ {
+ "name": "stringifyCSSSelector"
+ },
+ {
+ "name": "stringifyForError"
+ },
+ {
+ "name": "subscribeTo"
+ },
+ {
+ "name": "subscribeToArray"
+ },
+ {
+ "name": "syncPendingControls"
+ },
+ {
+ "name": "throwMixedMultiProviderError"
+ },
+ {
+ "name": "throwMultipleComponentError"
+ },
+ {
+ "name": "toObservable"
+ },
+ {
+ "name": "toRefArray"
+ },
+ {
+ "name": "toTStylingRange"
+ },
+ {
+ "name": "trackByIdentity"
+ },
+ {
+ "name": "u"
+ },
+ {
+ "name": "unimplemented"
+ },
+ {
+ "name": "unwrapRNode"
+ },
+ {
+ "name": "updateControl"
+ },
+ {
+ "name": "updateMicroTaskStatus"
+ },
+ {
+ "name": "updateTransplantedViewCount"
+ },
+ {
+ "name": "viewAttachedToChangeDetector"
+ },
+ {
+ "name": "wrapListener"
+ },
+ {
+ "name": "writeDirectClass"
+ },
+ {
+ "name": "writeDirectStyle"
+ },
+ {
+ "name": "ɵAbstractFormGroupDirective_BaseFactory"
+ },
+ {
+ "name": "ɵInternalFormsSharedModule"
+ },
+ {
+ "name": "ɵNgNoValidate"
+ },
+ {
+ "name": "ɵɵInheritDefinitionFeature"
+ },
+ {
+ "name": "ɵɵNgOnChangesFeature"
+ },
+ {
+ "name": "ɵɵProvidersFeature"
+ },
+ {
+ "name": "ɵɵadvance"
+ },
+ {
+ "name": "ɵɵattribute"
+ },
+ {
+ "name": "ɵɵclassProp"
+ },
+ {
+ "name": "ɵɵdefineComponent"
+ },
+ {
+ "name": "ɵɵdefineDirective"
+ },
+ {
+ "name": "ɵɵdefineInjectable"
+ },
+ {
+ "name": "ɵɵdefineInjector"
+ },
+ {
+ "name": "ɵɵdefineNgModule"
+ },
+ {
+ "name": "ɵɵdirectiveInject"
+ },
+ {
+ "name": "ɵɵelement"
+ },
+ {
+ "name": "ɵɵelementEnd"
+ },
+ {
+ "name": "ɵɵelementStart"
+ },
+ {
+ "name": "ɵɵgetFactoryOf"
+ },
+ {
+ "name": "ɵɵgetInheritedFactory"
+ },
+ {
+ "name": "ɵɵinject"
+ },
+ {
+ "name": "ɵɵlistener"
+ },
+ {
+ "name": "ɵɵnextContext"
+ },
+ {
+ "name": "ɵɵproperty"
+ },
+ {
+ "name": "ɵɵtemplate"
+ },
+ {
+ "name": "ɵɵtext"
+ }
+]
\ No newline at end of file
diff --git a/packages/core/test/bundling/forms/forms_e2e_spec.ts b/packages/core/test/bundling/forms/forms_e2e_spec.ts
new file mode 100644
index 0000000000..eacb295420
--- /dev/null
+++ b/packages/core/test/bundling/forms/forms_e2e_spec.ts
@@ -0,0 +1,67 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+import '@angular/compiler';
+import {ɵwhenRendered as whenRendered} from '@angular/core';
+import {withBody} from '@angular/private/testing';
+import * as path from 'path';
+
+const PACKAGE = 'angular/packages/core/test/bundling/forms';
+const BUNDLES = ['bundle.js', 'bundle.min_debug.js', 'bundle.min.js'];
+
+describe('functional test for forms', () => {
+ BUNDLES.forEach((bundle) => {
+ describe(`using ${bundle} bundle`, () => {
+ it('should render template form', withBody('