The source map does not currently work with the transformer pipeline.
It will be re-enabled after TypeScript 2.4 is made the min version.
To revert to the former compiler, use the `disableTransformerPipeline` in
tsconfig.json:
```
{
  "angularCompilerOptions": {
    "disableTransformerPipeline": true
  }
}
```
		
	
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.5 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 './init';
 | 
						|
import {BindingErrorComp} from '../src/errors';
 | 
						|
import {createComponent} from './util';
 | 
						|
 | 
						|
// TODO(tbosch): source maps does not currently work with the transformer pipeline
 | 
						|
xdescribe('source maps', () => {
 | 
						|
  it('should report source location for binding errors', () => {
 | 
						|
    const comp = createComponent(BindingErrorComp);
 | 
						|
    let error: any;
 | 
						|
    try {
 | 
						|
      comp.detectChanges();
 | 
						|
    } catch (e) {
 | 
						|
      error = e;
 | 
						|
    }
 | 
						|
    const sourcePosition = getSourcePositionForStack(error.stack);
 | 
						|
    expect(sourcePosition.line).toBe(2);
 | 
						|
    expect(sourcePosition.column).toBe(13);
 | 
						|
    expect(sourcePosition.source.endsWith('errors.html')).toBe(true);
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
function getSourcePositionForStack(stack: string): {source: string, line: number, column: number} {
 | 
						|
  const htmlLocations = stack
 | 
						|
                            .split('\n')
 | 
						|
                            // e.g. at View_MyComp_0 (...html:153:40)
 | 
						|
                            .map(line => /\((.*\.html):(\d+):(\d+)/.exec(line) !)
 | 
						|
                            .filter(match => !!match)
 | 
						|
                            .map(match => ({
 | 
						|
                                   source: match[1],
 | 
						|
                                   line: parseInt(match[2], 10),
 | 
						|
                                   column: parseInt(match[3], 10)
 | 
						|
                                 }));
 | 
						|
  return htmlLocations[0];
 | 
						|
}
 |