@@ -888,6 +888,8 @@ class TypeChecker {
888888 ast . usedExternModel = this . usedExternModel ;
889889 ast . usedExternException = this . resolveUsedExceptions ( this . usedExternModel ) ;
890890 ast . conflictModels = this . resolveConflictModels ( ast . usedExternModel ) ;
891+ ast . sameNameModels = this . getSameNameModels ( ast . usedExternModel ) ;
892+ ast . sameNameExceptions = this . getSameNameExceptions ( ast . usedExternModel ) ;
891893 ast . usedTypes = this . usedTypes ;
892894 ast . innerDep = this . innerDep ;
893895 ast . aliasNames = this . aliasNames ;
@@ -968,6 +970,72 @@ class TypeChecker {
968970 return conflicts ;
969971 }
970972
973+ getSameNameModels ( usedExternModel ) {
974+ var models = new Map ( ) ;
975+ var names = new Map ( ) ;
976+ for ( const [ name ] of this . models ) {
977+ const model = this . models . get ( name ) ;
978+ if ( model && model . isException ) {
979+ continue ;
980+ }
981+ names . set ( name , '' ) ;
982+ }
983+ for ( const [ moduleName ] of usedExternModel ) {
984+ const checker = this . dependencies . get ( moduleName ) ;
985+ for ( var [ name ] of checker . models ) {
986+ const model = checker . models . get ( name ) ;
987+ if ( model && model . isException ) {
988+ continue ;
989+ }
990+ if ( names . has ( name ) ) {
991+ models . set ( `${ moduleName } :${ name } ` , true ) ;
992+ const conflictModule = names . get ( name ) ;
993+ if ( conflictModule ) {
994+ models . set ( `${ conflictModule } :${ name } ` , true ) ;
995+ } else {
996+ models . set ( name , true ) ;
997+ }
998+
999+ }
1000+ names . set ( name , moduleName ) ;
1001+ }
1002+ }
1003+ return models ;
1004+ }
1005+
1006+ getSameNameExceptions ( usedExternModel ) {
1007+ var exceptions = new Map ( ) ;
1008+ var names = new Map ( ) ;
1009+ for ( const [ name ] of this . models ) {
1010+ const model = this . models . get ( name ) ;
1011+ if ( model && ! model . isException ) {
1012+ continue ;
1013+ }
1014+ names . set ( name , '' ) ;
1015+ }
1016+ for ( const [ moduleName ] of usedExternModel ) {
1017+ const checker = this . dependencies . get ( moduleName ) ;
1018+ for ( var name of checker . models ) {
1019+ const model = checker . models . get ( name ) ;
1020+ if ( model && ! model . isException ) {
1021+ continue ;
1022+ }
1023+ if ( names . has ( name ) ) {
1024+ exceptions . set ( `${ moduleName } :${ name } ` , true ) ;
1025+ const conflictModule = names . get ( name ) ;
1026+ if ( conflictModule ) {
1027+ exceptions . set ( `${ conflictModule } :${ name } ` , true ) ;
1028+ } else {
1029+ exceptions . set ( name , true ) ;
1030+ }
1031+
1032+ }
1033+ names . set ( name , moduleName ) ;
1034+ }
1035+ }
1036+ return exceptions ;
1037+ }
1038+
9711039 resolveUsedExceptions ( usedExternModel ) {
9721040 const exceptions = new Map ( ) ;
9731041 for ( const [ moduleName , models ] of usedExternModel ) {
0 commit comments