@@ -266,9 +266,14 @@ protected override ConcreteSyntaxTree CreateStaticMain(IClassWriter cw, string a
266
266
return wr . NewBlock ( $ "public static void _StaticMain(Dafny.ISequence<Dafny.ISequence<{ CharTypeName } >> { argsParameterName } )") ;
267
267
}
268
268
269
+ string IdProtectModule ( string moduleName ) {
270
+ return string . Join ( "." , moduleName . Split ( "." ) . Select ( IdProtect ) ) ;
271
+ }
272
+
269
273
protected override ConcreteSyntaxTree CreateModule ( string moduleName , bool isDefault , ModuleDefinition externModule ,
270
274
string libraryName /*?*/ , ConcreteSyntaxTree wr ) {
271
- return wr . NewBlock ( $ "namespace { IdProtect ( moduleName ) } ", " // end of " + $ "namespace { IdProtect ( moduleName ) } ") ;
275
+ moduleName = IdProtectModule ( moduleName ) ;
276
+ return wr . NewBlock ( $ "namespace { moduleName } ", " // end of " + $ "namespace { moduleName } ") ;
272
277
}
273
278
274
279
protected override string GetHelperModuleName ( ) => DafnyHelpersClass ;
@@ -1213,7 +1218,11 @@ string DtCtorName(DatatypeCtor ctor) {
1213
1218
Contract . Ensures ( Contract . Result < string > ( ) != null ) ;
1214
1219
1215
1220
var dt = ctor . EnclosingDatatype ;
1216
- var dtName = dt . EnclosingModuleDefinition . TryToAvoidName ? IdName ( dt ) : dt . GetFullCompileName ( Options ) ;
1221
+ var dtName = IdName ( dt ) ;
1222
+ if ( ! dt . EnclosingModuleDefinition . TryToAvoidName ) {
1223
+ dtName = IdProtectModule ( dt . EnclosingModuleDefinition . GetCompileName ( Options ) ) + "." + dtName ;
1224
+ }
1225
+
1217
1226
return dt . IsRecordType ? dtName : dtName + "_" + ctor . GetCompileName ( Options ) ;
1218
1227
}
1219
1228
@@ -2472,7 +2481,7 @@ private string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ member = null,
2472
2481
if ( ( cl is DatatypeDecl )
2473
2482
&& ! ignoreInterface
2474
2483
&& ( member is null || ! NeedsCustomReceiver ( member ) ) ) {
2475
- return ( cl . EnclosingModuleDefinition . TryToAvoidName ? "" : IdProtect ( cl . EnclosingModuleDefinition . GetCompileName ( Options ) ) + "." ) + DtTypeName ( cl , false ) ;
2484
+ return ( cl . EnclosingModuleDefinition . TryToAvoidName ? "" : IdProtectModule ( cl . EnclosingModuleDefinition . GetCompileName ( Options ) ) + "." ) + DtTypeName ( cl , false ) ;
2476
2485
}
2477
2486
2478
2487
if ( cl . EnclosingModuleDefinition . TryToAvoidName ) {
@@ -2482,7 +2491,7 @@ private string FullTypeName(UserDefinedType udt, MemberDecl/*?*/ member = null,
2482
2491
if ( cl . IsExtern ( Options , out _ , out _ ) ) {
2483
2492
return cl . EnclosingModuleDefinition . GetCompileName ( Options ) + "." + cl . GetCompileName ( Options ) ;
2484
2493
}
2485
- return IdProtect ( cl . EnclosingModuleDefinition . GetCompileName ( Options ) ) + "." + IdProtect ( cl . GetCompileName ( Options ) ) ;
2494
+ return IdProtectModule ( cl . EnclosingModuleDefinition . GetCompileName ( Options ) ) + "." + IdProtect ( cl . GetCompileName ( Options ) ) ;
2486
2495
}
2487
2496
2488
2497
protected override void EmitThis ( ConcreteSyntaxTree wr , bool callToInheritedMember ) {
@@ -2496,7 +2505,7 @@ protected override void EmitThis(ConcreteSyntaxTree wr, bool callToInheritedMemb
2496
2505
2497
2506
protected override void EmitDatatypeValue ( DatatypeValue dtv , string typeDescriptorArguments , string arguments , ConcreteSyntaxTree wr ) {
2498
2507
var dt = dtv . Ctor . EnclosingDatatype ;
2499
- var dtName = dt . GetFullCompileName ( Options ) ;
2508
+ var dtName = IdProtectModule ( dt . EnclosingModuleDefinition . GetCompileName ( Options ) ) + "." + IdName ( dt ) ;
2500
2509
2501
2510
var nonGhostInferredTypeArgs = SelectNonGhost ( dt , dtv . InferredTypeArgs ) ;
2502
2511
var typeParams = nonGhostInferredTypeArgs . Count == 0 ? "" : $ "<{ TypeNames ( nonGhostInferredTypeArgs , wr , dtv . tok ) } >";
0 commit comments