//// [tests/cases/compiler/classAttributeInferenceTemplate.ts] ////

//// [classAttributeInferenceTemplate.ts]
class MyClass {
    property;
    property2;

    constructor() {
        const variable = 'something'

        this.property = `foo`; // Correctly inferred as `string`
        this.property2 = `foo-${variable}`; // Causes an error

        const localProperty = `foo-${variable}`; // Correctly inferred as `string`
    }
}

class MyClass2 {
    accessor property;
    accessor property2;

    constructor() {
        const variable = 'something'

        this.property = `foo`; // Correctly inferred as `string`
        this.property2 = `foo-${variable}`; // Causes an error

        const localProperty = `foo-${variable}`; // Correctly inferred as `string`
    }
}


//// [classAttributeInferenceTemplate.js]
"use strict";
class MyClass {
    property;
    property2;
    constructor() {
        const variable = 'something';
        this.property = `foo`; // Correctly inferred as `string`
        this.property2 = `foo-${variable}`; // Causes an error
        const localProperty = `foo-${variable}`; // Correctly inferred as `string`
    }
}
class MyClass2 {
    accessor property;
    accessor property2;
    constructor() {
        const variable = 'something';
        this.property = `foo`; // Correctly inferred as `string`
        this.property2 = `foo-${variable}`; // Causes an error
        const localProperty = `foo-${variable}`; // Correctly inferred as `string`
    }
}
