@@ -517,6 +517,17 @@ func isValidModuleAlias(name string) bool {
517517}
518518
519519func bindRequireAlias (root * Env , alias string , module Value ) error {
520+ if err := validateRequireAliasBinding (root , alias , module ); err != nil {
521+ return err
522+ }
523+ if alias == "" {
524+ return nil
525+ }
526+ root .Define (alias , module )
527+ return nil
528+ }
529+
530+ func validateRequireAliasBinding (root * Env , alias string , module Value ) error {
520531 if alias == "" {
521532 return nil
522533 }
@@ -526,7 +537,6 @@ func bindRequireAlias(root *Env, alias string, module Value) error {
526537 }
527538 return fmt .Errorf ("require: alias %q already defined" , alias )
528539 }
529- root .Define (alias , module )
530540 return nil
531541}
532542
@@ -610,12 +620,14 @@ func builtinRequire(exec *Execution, receiver Value, args []Value, kwargs map[st
610620 }
611621 }
612622
613- bindModuleExportsWithoutOverwrite (exec .root , exports )
614-
615623 exportsVal := NewObject (exports )
616- exec .modules [entry .key ] = exportsVal
617- if err := bindRequireAlias (exec .root , alias , exportsVal ); err != nil {
624+ if err := validateRequireAliasBinding (exec .root , alias , exportsVal ); err != nil {
618625 return NewNil (), err
619626 }
627+ bindModuleExportsWithoutOverwrite (exec .root , exports )
628+ exec .modules [entry .key ] = exportsVal
629+ if alias != "" {
630+ exec .root .Define (alias , exportsVal )
631+ }
620632 return exportsVal , nil
621633}
0 commit comments