Skip to content

Commit dd7b320

Browse files
authored
Emit shebangs when printing (#1193)
1 parent 792e0c7 commit dd7b320

File tree

6 files changed

+18
-13
lines changed

6 files changed

+18
-13
lines changed

internal/printer/printer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4336,7 +4336,11 @@ func (p *Printer) emitJSDocNode(node *ast.Node) {
43364336
//
43374337

43384338
func (p *Printer) emitShebangIfNeeded(node *ast.SourceFile) {
4339-
// !!!
4339+
shebang := scanner.GetShebang(node.Text())
4340+
if shebang != "" {
4341+
p.writeComment(shebang)
4342+
p.writeLine()
4343+
}
43404344
}
43414345

43424346
func (p *Printer) emitPrologueDirectives(statements *ast.StatementList) int {

internal/scanner/scanner.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2260,6 +2260,15 @@ func scanShebangTrivia(text string, pos int) int {
22602260
return pos
22612261
}
22622262

2263+
func GetShebang(text string) string {
2264+
if !isShebangTrivia(text, 0) {
2265+
return ""
2266+
}
2267+
2268+
end := scanShebangTrivia(text, 0)
2269+
return text[:end]
2270+
}
2271+
22632272
func GetScannerForSourceFile(sourceFile *ast.SourceFile, pos int) *Scanner {
22642273
s := NewScanner()
22652274
s.text = sourceFile.Text()

testdata/baselines/reference/submodule/compiler/shebang.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ var foo = 'I wish the generated JS to be executed in node';
66

77

88
//// [shebang.js]
9+
#!/usr/bin/env node
910
var foo = 'I wish the generated JS to be executed in node';

testdata/baselines/reference/submodule/compiler/shebang.js.diff

Lines changed: 0 additions & 8 deletions
This file was deleted.

testdata/baselines/reference/submodule/compiler/shebangBeforeReferences.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {x} from "test";
1515
use(x);
1616

1717
//// [f.js]
18+
#!/usr/bin/env node
1819
"use strict";
1920
Object.defineProperty(exports, "__esModule", { value: true });
2021
/// <reference path="f.d.ts"/>

testdata/baselines/reference/submodule/compiler/shebangBeforeReferences.js.diff

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
--- old.shebangBeforeReferences.js
22
+++ new.shebangBeforeReferences.js
3-
@@= skipped -14, +14 lines =@@
4-
use(x);
5-
3+
@@= skipped -16, +16 lines =@@
64
//// [f.js]
7-
-#!/usr/bin/env node
5+
#!/usr/bin/env node
86
"use strict";
97
-/// <reference path="f.d.ts"/>
108
Object.defineProperty(exports, "__esModule", { value: true });

0 commit comments

Comments
 (0)