diff --git a/internal/binder/binder.go b/internal/binder/binder.go index ad96cb53de..5f18fa716a 100644 --- a/internal/binder/binder.go +++ b/internal/binder/binder.go @@ -797,18 +797,18 @@ func (b *Binder) bindModuleDeclaration(node *ast.Node) { if ast.IsModuleAugmentationExternal(node) { b.declareModuleSymbol(node) } else { - var pattern core.Pattern name := node.AsModuleDeclaration().Name() + symbol := b.declareSymbolAndAddToSymbolTable(node, ast.SymbolFlagsValueModule, ast.SymbolFlagsValueModuleExcludes) + if ast.IsStringLiteral(name) { - pattern = core.TryParsePattern(name.AsStringLiteral().Text) + pattern := core.TryParsePattern(name.AsStringLiteral().Text) if !pattern.IsValid() { + // An invalid pattern - must have multiple wildcards. b.errorOnFirstToken(name, diagnostics.Pattern_0_can_have_at_most_one_Asterisk_character, name.AsStringLiteral().Text) + } else if pattern.StarIndex >= 0 { + b.file.PatternAmbientModules = append(b.file.PatternAmbientModules, &ast.PatternAmbientModule{Pattern: pattern, Symbol: symbol}) } } - symbol := b.declareSymbolAndAddToSymbolTable(node, ast.SymbolFlagsValueModule, ast.SymbolFlagsValueModuleExcludes) - if pattern.IsValid() && pattern.StarIndex >= 0 { - b.file.PatternAmbientModules = append(b.file.PatternAmbientModules, &ast.PatternAmbientModule{Pattern: pattern, Symbol: symbol}) - } } } else { state := b.declareModuleSymbol(node)