@@ -205,12 +205,22 @@ func (p *Parser) parseModule() (module BlockStmt) {
205205 // could be an import call expression
206206 left := & LiteralExpr {ImportToken , []byte ("import" )}
207207 p .exprLevel ++
208- suffix := p .parseExpressionSuffix (left , OpExpr , OpCall )
208+ expr := p .parseExpressionSuffix (left , OpExpr , OpCall )
209209 p .exprLevel --
210- module .List = append (module .List , & ExprStmt {suffix })
210+ module .List = append (module .List , & ExprStmt {expr })
211211 if ! p .prevLT && p .tt == SemicolonToken {
212212 p .next ()
213213 }
214+ } else if p .tt == DotToken {
215+ p .next ()
216+ if ! p .consume ("import.meta expression" , MetaToken ) {
217+ return module
218+ }
219+ left := & ImportMetaExpr {}
220+ p .exprLevel ++
221+ expr := p .parseExpressionSuffix (left , OpExpr , OpMember )
222+ p .exprLevel --
223+ module .List = append (module .List , & ExprStmt {expr })
214224 } else {
215225 importStmt := p .parseImportStmt ()
216226 module .List = append (module .List , & importStmt )
@@ -696,7 +706,7 @@ func (p *Parser) parseImportStmt() (importStmt ImportStmt) {
696706 p .fail ("import statement" , IdentifierToken )
697707 return
698708 }
699- importStmt .List = []Alias {Alias {star , p .data }}
709+ importStmt .List = []Alias {{star , p .data }}
700710 p .next ()
701711 } else if expectClause && p .tt == OpenBraceToken {
702712 p .next ()
@@ -769,10 +779,10 @@ func (p *Parser) parseExportStmt() (exportStmt ExportStmt) {
769779 p .fail ("export statement" , IdentifierToken , StringToken )
770780 return
771781 }
772- exportStmt .List = []Alias {Alias {star , p .data }}
782+ exportStmt .List = []Alias {{star , p .data }}
773783 p .next ()
774784 } else {
775- exportStmt .List = []Alias {Alias {nil , star }}
785+ exportStmt .List = []Alias {{nil , star }}
776786 }
777787 if p .tt != FromToken {
778788 p .fail ("export statement" , FromToken )
0 commit comments