// Code generated by convertFourslash; DO NOT EDIT.
// To modify this test, run "npm run makemanual codeFixClassImplementInterfaceComments"

package fourslash_test

import (
	"testing"

	"github.com/microsoft/typescript-go/internal/fourslash"
	"github.com/microsoft/typescript-go/internal/testutil"
)

func TestCodeFixClassImplementInterfaceComments(t *testing.T) {
	fourslash.SkipIfFailing(t)
	t.Parallel()
	defer testutil.RecoverAndFail(t, "Panic on fourslash test")
	const content = `// @lib: es2017
namespace N {
    /**enum prefix */
    export enum /**enum identifier prefix */ E /**open-brace prefix*/ {
    /* literal prefix */ a /** comma prefix */,
    /* literal prefix */ b /** comma prefix */,
    /* literal prefix */ c
    /** close brace prefix */ }
    /** interface prefix */
    export interface /**interface name prefix */ I /**open-brace prefix*/ {
    /** property prefix */ a /** colon prefix */: /** enum literal prefix 1*/ E /** dot prefix */. /** enum literal prefix 2*/a;
    /** property prefix */ b /** colon prefix */: /** enum prefix */ E;
    /**method signature prefix */foo /**open angle prefix */< /**type parameter name prefix */ X /** closing angle prefix */> /**open paren prefix */(/** parameter prefix */ a/** colon prefix */: /** parameter type prefix */ X /** close paren prefix */) /** colon prefix */: /** return type prefix */ string /** semicolon prefix */;
        /**close-brace prefix*/ }
/**close-brace prefix*/ }
class C implements N.I {}`
	f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
	defer done()
	f.VerifyCodeFix(t, fourslash.VerifyCodeFixOptions{
		Description: "Implement interface 'N.I'",
		NewFileContent: `namespace N {
    /**enum prefix */
    export enum /**enum identifier prefix */ E /**open-brace prefix*/ {
    /* literal prefix */ a /** comma prefix */,
    /* literal prefix */ b /** comma prefix */,
    /* literal prefix */ c
    /** close brace prefix */ }
    /** interface prefix */
    export interface /**interface name prefix */ I /**open-brace prefix*/ {
    /** property prefix */ a /** colon prefix */: /** enum literal prefix 1*/ E /** dot prefix */. /** enum literal prefix 2*/a;
    /** property prefix */ b /** colon prefix */: /** enum prefix */ E;
    /**method signature prefix */foo /**open angle prefix */< /**type parameter name prefix */ X /** closing angle prefix */> /**open paren prefix */(/** parameter prefix */ a/** colon prefix */: /** parameter type prefix */ X /** close paren prefix */) /** colon prefix */: /** return type prefix */ string /** semicolon prefix */;
        /**close-brace prefix*/ }
/**close-brace prefix*/ }
class C implements N.I {
    a: N.E.a;
    b: N.E;
    foo<X /** closing angle prefix */>(a: X /** close paren prefix */): string /** semicolon prefix */ {
        throw new Error("Method not implemented.");
    }
}`,
		Index: 0,
	})
}
