aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/Link/ResolveReferencesCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/Link/ResolveReferencesCommand.cs')
-rw-r--r--src/WixToolset.Core/Link/ResolveReferencesCommand.cs25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/WixToolset.Core/Link/ResolveReferencesCommand.cs b/src/WixToolset.Core/Link/ResolveReferencesCommand.cs
index d2be0699..90b61e8b 100644
--- a/src/WixToolset.Core/Link/ResolveReferencesCommand.cs
+++ b/src/WixToolset.Core/Link/ResolveReferencesCommand.cs
@@ -72,27 +72,22 @@ namespace WixToolset.Core.Link
72 continue; 72 continue;
73 } 73 }
74 74
75 if (!this.symbolsWithSections.TryGetValue(wixSimpleReferenceRow.SymbolicName, out var symbolWithSection)) 75 // See if the symbol (and any of its duplicates) are appropriately accessible.
76 { 76 if (this.symbolsWithSections.TryGetValue(wixSimpleReferenceRow.SymbolicName, out var symbolWithSection))
77 this.Messaging.Write(ErrorMessages.UnresolvedReference(wixSimpleReferenceRow.SourceLineNumbers, wixSimpleReferenceRow.SymbolicName));
78 }
79 else // see if the symbol (and any of its duplicates) are appropriately accessible.
80 { 77 {
81 var accessible = this.DetermineAccessibleSymbols(section, symbolWithSection); 78 var accessible = this.DetermineAccessibleSymbols(section, symbolWithSection);
82 if (!accessible.Any()) 79 if (accessible.Count == 1)
83 {
84 this.Messaging.Write(ErrorMessages.UnresolvedReference(wixSimpleReferenceRow.SourceLineNumbers, wixSimpleReferenceRow.SymbolicName, symbolWithSection.Access));
85 }
86 else if (1 == accessible.Count)
87 { 80 {
88 var accessibleSymbol = accessible[0]; 81 var accessibleSymbol = accessible[0];
89 this.referencedSymbols.Add(accessibleSymbol); 82 if (this.referencedSymbols.Add(accessibleSymbol) && null != accessibleSymbol.Section)
90
91 if (null != accessibleSymbol.Section)
92 { 83 {
93 this.RecursivelyResolveReferences(accessibleSymbol.Section); 84 this.RecursivelyResolveReferences(accessibleSymbol.Section);
94 } 85 }
95 } 86 }
87 else if (accessible.Count == 0)
88 {
89 this.Messaging.Write(ErrorMessages.UnresolvedReference(wixSimpleReferenceRow.SourceLineNumbers, wixSimpleReferenceRow.SymbolicName, symbolWithSection.Access));
90 }
96 else // display errors for the duplicate symbols. 91 else // display errors for the duplicate symbols.
97 { 92 {
98 var accessibleSymbol = accessible[0]; 93 var accessibleSymbol = accessible[0];
@@ -113,6 +108,10 @@ namespace WixToolset.Core.Link
113 } 108 }
114 } 109 }
115 } 110 }
111 else
112 {
113 this.Messaging.Write(ErrorMessages.UnresolvedReference(wixSimpleReferenceRow.SourceLineNumbers, wixSimpleReferenceRow.SymbolicName));
114 }
116 } 115 }
117 } 116 }
118 117