tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts(13,30): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts(15,11): error TS2347: Untyped function calls may not accept type arguments.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts(17,11): error TS2347: Untyped function calls may not accept type arguments.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts(17,30): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts(35,5): error TS2377: Constructors for derived classes must contain a 'super' call.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts(36,9): error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts(36,14): error TS2754: 'super' may not use type arguments.
tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts(36,34): error TS1034: 'super' must be followed by an argument list or member access.


==== tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts (8 errors) ====
    export interface SomethingTaggable {
        <T>(t: TemplateStringsArray, ...args: T[]): SomethingNewable;
    }
    
    export interface SomethingNewable {
        new <T>(...args: T[]): any;
    }
    
    declare const tag: SomethingTaggable;
    
    const a = new tag `${100} ${200}`<string>("hello", "world");
    
    const b = new tag<number> `${"hello"} ${"world"}`(100, 200);
                                 ~~~~~~~
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
    
    const c = new tag<number> `${100} ${200}`<string>("hello", "world");
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2347: Untyped function calls may not accept type arguments.
    
    const d = new tag<number> `${"hello"} ${"world"}`<string>(100, 200);
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2347: Untyped function calls may not accept type arguments.
                                 ~~~~~~~
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
    
    /**
     * Testing ASI. This should never parse as
     *
     * ```ts
     * new tag<number>;
     * `hello${369}`();
     * ```
     */
    const e = new tag<number>
    `hello`();
    
    class SomeBase<A, B, C> {
        a!: A; b!: B; c!: C;
    }
    
    class SomeDerived<T> extends SomeBase<number, string, T> {
        constructor() {
        ~~~~~~~~~~~~~~~
            super<number, string, T> `hello world`;
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            ~~~~~
!!! error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
                 ~~~~~~~~~~~~~~~~~~~
!!! error TS2754: 'super' may not use type arguments.
                                     ~~~~~~~~~~~~~
!!! error TS1034: 'super' must be followed by an argument list or member access.
        }
    ~~~~~
!!! error TS2377: Constructors for derived classes must contain a 'super' call.
    }