Skip to content

Panic in SkipTriviaEx when printing a type predicate from another file with declaration maps enabled #1092

Closed
@RyanCavanaugh

Description

@RyanCavanaugh

export.ts
This function being later in the file is actually important, so the comment here is load-bearing.

/**
 * blah blah blah blah
 * blah blah blah blah
 * blah blah blah blah
 * blah blah blah blah
 * blah blah blah blah
 */

export function foo() {
  return (_item: unknown): _item is boolean => {
    return true;
  };
}

import.ts

import { foo } from './export';
export const x = foo();

`tsconfig.json

{
  "compilerOptions": {
    "target": "es2016",
    "declaration": true,
    "declarationMap": true,
    "esModuleInterop": true,
    "strict": true,
  }
}

Trace

panic: runtime error: slice bounds out of range [167:58]

goroutine 80 [running]:
github.com/microsoft/typescript-go/internal/scanner.SkipTriviaEx({0xc0000a2000, 0x3a}, 0x80000000000ac?, 0x37?)
        D:/github/typescript-go/internal/scanner/scanner.go:2100 +0x4a8
github.com/microsoft/typescript-go/internal/scanner.SkipTrivia(...)
        D:/github/typescript-go/internal/scanner/scanner.go:2085
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitSourceMapsBeforeNode(0xc0005a9800, 0xc00014f9e0)
        D:/github/typescript-go/internal/printer/printer.go:5470 +0x112
github.com/microsoft/typescript-go/internal/printer.(*Printer).enterNode(0xc0005a9800, 0xc00014f9e0)
        D:/github/typescript-go/internal/printer/printer.go:5694 +0x50
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitBindingIdentifier(0xc0005a9800, 0xc00014f9e0)
        D:/github/typescript-go/internal/printer/printer.go:1140 +0xc5
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitBindingName(0xc0005a9800?, 0xc000a7a620?)
        D:/github/typescript-go/internal/printer/printer.go:1191 +0x45
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitParameterName(...)
        D:/github/typescript-go/internal/printer/printer.go:1413
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitParameter(0xc0005a9800, 0xc000a7a620)
        D:/github/typescript-go/internal/printer/printer.go:1421 +0xac
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitParameterNode(0xc0005a9800?, 0xc000f95338?)
        D:/github/typescript-go/internal/printer/printer.go:1433 +0x27
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListItems(0xc0005a9800, 0xb1f5e8, 0xc00163ea80, {0xc000208dc0, 0x1, 0x214630205a0?}, 0xa10, 0x0, {0xffffffff, 0xffffffff})
        D:/github/typescript-go/internal/printer/printer.go:4676 +0x4b9
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListRange(0xc0005a9800, 0xb1f5e8, 0xc00163ea80, 0xc000f3f0e0, 0xa10, 0xc001183c00?, 0xc000f95440?)
        D:/github/typescript-go/internal/printer/printer.go:4473 +0x395
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitList(0xc0005a9800, 0xb1f5e8, 0xc00163ea80, 0xc000f3f0e0, 0xa10)
        D:/github/typescript-go/internal/printer/printer.go:4418 +0x90
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitParameters(0xc0005a9800?, 0xc00163ea80?, 0xc000f3f0e0?)
        D:/github/typescript-go/internal/printer/printer.go:1485 +0x54
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitFunctionType(0xc0005a9800, 0xc00163ea80)
        D:/github/typescript-go/internal/printer/printer.go:1867 +0x178
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNode(0xc0005a9800, 0xc00163ea80, 0x167b2b0?)
        D:/github/typescript-go/internal/printer/printer.go:2230 +0x21d
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNodePreservingExtends(...)
        D:/github/typescript-go/internal/printer/printer.go:2192
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNodeOutsideExtends(...)
        D:/github/typescript-go/internal/printer/printer.go:2186
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeAnnotation(0xc0005a9800, 0xc00163ea80)
        D:/github/typescript-go/internal/printer/printer.go:1469 +0x8b
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitVariableDeclaration(0xc0005a9800, 0xc00167b2b0)
        D:/github/typescript-go/internal/printer/printer.go:3437 +0x6d
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitVariableDeclarationNode(0xc0005a9800?, 0xc000f95630?)
        D:/github/typescript-go/internal/printer/printer.go:3444 +0x27
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListItems(0xc0005a9800, 0xb1f630, 0xc001080b00, {0xc000208dd0, 0x1, 0xc00001e1e0?}, 0x210, 0x0, {0x2d, 0x37})
        D:/github/typescript-go/internal/printer/printer.go:4676 +0x4b9
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListRange(0xc0005a9800, 0xb1f630, 0xc001080b00, 0xc001080a80, 0x210, 0xc07d40?, 0x1?)
        D:/github/typescript-go/internal/printer/printer.go:4473 +0x395
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitList(0xc0005a9800, 0xb1f630, 0xc001080b00, 0xc001080a80, 0x210)
        D:/github/typescript-go/internal/printer/printer.go:4418 +0x90
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitVariableDeclarationList(0xc0005a9800, 0xc001080b00)
        D:/github/typescript-go/internal/printer/printer.go:3464 +0x1f4
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitVariableStatement(0xc0005a9800, 0xc000230960)
        D:/github/typescript-go/internal/printer/printer.go:3152 +0x6c
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitStatement(0xc000f95820?, 0xc000f95860?)
        D:/github/typescript-go/internal/printer/printer.go:3903 +0x98
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListItems(0xc0005a9800, 0xb1f5f0, 0xc000234b08, {0xc0012082a0, 0x1, 0xc000208dd0?}, 0x1, 0x0, {0x0, 0x38})
        D:/github/typescript-go/internal/printer/printer.go:4676 +0x4b9
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListRange(0xc0005a9800, 0xb1f5f0, 0xc000234b08, 0xc001080aa0, 0x1, 0x23?, 0xc0000bc008?)
        D:/github/typescript-go/internal/printer/printer.go:4473 +0x395
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitSourceFile(0xc0005a9800, 0xc000234b08)
        D:/github/typescript-go/internal/printer/printer.go:4395 +0x208
github.com/microsoft/typescript-go/internal/printer.(*Printer).Write(0xc0005a9800, 0xc000234b08, 0xc00028c2a0?, {0xc20cb0, 0xc00163e7e0}, 0x1?)
        D:/github/typescript-go/internal/printer/printer.go:4925 +0x100c
github.com/microsoft/typescript-go/internal/compiler.(*emitter).printSourceFile(0xc00014f440, {0xc00028c2a0, 0x23}, {0xc00028c2d0, 0x27}, 0xc000234b08, 0xc0005a9800, 0x1)
        D:/github/typescript-go/internal/compiler/emitter.go:158 +0x289
github.com/microsoft/typescript-go/internal/compiler.(*emitter).emitDeclarationFile(0xc00014f440, 0xc0000bc008, {0xc00028c2a0, 0x23}, {0xc00028c2d0, 0x27})
        D:/github/typescript-go/internal/compiler/emitter.go:127 +0x5c5
github.com/microsoft/typescript-go/internal/compiler.(*emitter).emit(0xc00014f440)
        D:/github/typescript-go/internal/compiler/emitter.go:43 +0x5d
github.com/microsoft/typescript-go/internal/compiler.(*Program).Emit.func2()
        D:/github/typescript-go/internal/compiler/program.go:845 +0x13c
github.com/microsoft/typescript-go/internal/core.(*parallelWorkGroup).Queue.func1()
        D:/github/typescript-go/internal/core/workgroup.go:39 +0x50
created by github.com/microsoft/typescript-go/internal/core.(*parallelWorkGroup).Queue in goroutine 1
        D:/github/typescript-go/internal/core/workgroup.go:37 +0x85

Metadata

Metadata

Labels

CrashbugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions