There is an encoding issue with using delta `Δ`, where the browser will attempt to detect the file encoding if the character set is not explicitly declared on a `<script/>` tag, and Chrome will find the `Δ` character and decide it is window-1252 encoding, which misinterprets the `Δ` character to be some other character that is not a valid JS identifier character
So back to the frog eyes we go.
```
    __
   /ɵɵ\
  ( -- ) - I am ineffable. I am forever.
 _/    \_
/  \  /  \
==  ==  ==
```
PR Close #30546
		
	
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google Inc. 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 {MockDirectory, setup} from '@angular/compiler/test/aot/test_util';
 | |
| import {compile, expectEmit} from './mock_compile';
 | |
| 
 | |
| describe('compiler compliance: dependency injection', () => {
 | |
|   const angularFiles = setup({
 | |
|     compileAngular: false,
 | |
|     compileFakeCore: true,
 | |
|     compileAnimations: false,
 | |
|   });
 | |
| 
 | |
|   it('should create factory methods', () => {
 | |
|     const files = {
 | |
|       app: {
 | |
|         'spec.ts': `
 | |
|               import {Component, NgModule, Injectable, Attribute, Host, SkipSelf, Self, Optional} from '@angular/core';
 | |
| 
 | |
|               @Injectable()
 | |
|               export class MyService {}
 | |
| 
 | |
|               @Component({
 | |
|                 selector: 'my-component',
 | |
|                 template: \`\`
 | |
|               })
 | |
|               export class MyComponent {
 | |
|                 constructor(
 | |
|                   @Attribute('name') name:string,
 | |
|                   s1: MyService,
 | |
|                   @Host() s2: MyService,
 | |
|                   @Self() s4: MyService,
 | |
|                   @SkipSelf() s3: MyService,
 | |
|                   @Optional() s5: MyService,
 | |
|                   @Self() @Optional() s6: MyService,
 | |
|                 ) {}
 | |
|               }
 | |
| 
 | |
|               @NgModule({declarations: [MyComponent], providers: [MyService]})
 | |
|               export class MyModule {}
 | |
|           `
 | |
|       }
 | |
|     };
 | |
| 
 | |
|     const factory = `
 | |
|       factory: function MyComponent_Factory(t) {
 | |
|         return new (t || MyComponent)(
 | |
|           $r3$.ɵɵinjectAttribute('name'),
 | |
|           $r3$.ɵɵdirectiveInject(MyService),
 | |
|           $r3$.ɵɵdirectiveInject(MyService, 1),
 | |
|           $r3$.ɵɵdirectiveInject(MyService, 2),
 | |
|           $r3$.ɵɵdirectiveInject(MyService, 4),
 | |
|           $r3$.ɵɵdirectiveInject(MyService, 8),
 | |
|           $r3$.ɵɵdirectiveInject(MyService, 10)
 | |
|         );
 | |
|       }`;
 | |
| 
 | |
| 
 | |
|     const result = compile(files, angularFiles);
 | |
| 
 | |
|     expectEmit(result.source, factory, 'Incorrect factory');
 | |
|   });
 | |
| 
 | |
| });
 |