diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/WixToolset.Core/Compiler.cs | 67 | ||||
-rw-r--r-- | src/WixToolset.Core/Compiler_2.cs | 3 | ||||
-rw-r--r-- | src/WixToolset.Core/Compiler_Bundle.cs | 8 | ||||
-rw-r--r-- | src/WixToolset.Core/Compiler_Module.cs | 3 |
4 files changed, 74 insertions, 7 deletions
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs index 020e35fe..3fa06f9c 100644 --- a/src/WixToolset.Core/Compiler.cs +++ b/src/WixToolset.Core/Compiler.cs | |||
@@ -3612,6 +3612,7 @@ namespace WixToolset.Core | |||
3612 | string tableId = null; | 3612 | string tableId = null; |
3613 | var unreal = false; | 3613 | var unreal = false; |
3614 | var columns = new List<WixCustomTableColumnSymbol>(); | 3614 | var columns = new List<WixCustomTableColumnSymbol>(); |
3615 | var foundColumns = false; | ||
3615 | 3616 | ||
3616 | foreach (var attrib in node.Attributes()) | 3617 | foreach (var attrib in node.Attributes()) |
3617 | { | 3618 | { |
@@ -3653,6 +3654,8 @@ namespace WixToolset.Core | |||
3653 | switch (child.Name.LocalName) | 3654 | switch (child.Name.LocalName) |
3654 | { | 3655 | { |
3655 | case "Column": | 3656 | case "Column": |
3657 | foundColumns = true; | ||
3658 | |||
3656 | var column = this.ParseColumnElement(child, childSourceLineNumbers, tableId); | 3659 | var column = this.ParseColumnElement(child, childSourceLineNumbers, tableId); |
3657 | if (column != null) | 3660 | if (column != null) |
3658 | { | 3661 | { |
@@ -3690,6 +3693,67 @@ namespace WixToolset.Core | |||
3690 | Unreal = unreal, | 3693 | Unreal = unreal, |
3691 | }); | 3694 | }); |
3692 | } | 3695 | } |
3696 | else if (!foundColumns) | ||
3697 | { | ||
3698 | this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "Column")); | ||
3699 | } | ||
3700 | } | ||
3701 | } | ||
3702 | |||
3703 | /// <summary> | ||
3704 | /// Parses a CustomTableRef element. | ||
3705 | /// </summary> | ||
3706 | /// <param name="node">Element to parse.</param> | ||
3707 | private void ParseCustomTableRefElement(XElement node) | ||
3708 | { | ||
3709 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); | ||
3710 | string tableId = null; | ||
3711 | |||
3712 | foreach (var attrib in node.Attributes()) | ||
3713 | { | ||
3714 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || CompilerCore.WixNamespace == attrib.Name.Namespace) | ||
3715 | { | ||
3716 | switch (attrib.Name.LocalName) | ||
3717 | { | ||
3718 | case "Id": | ||
3719 | tableId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | ||
3720 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixCustomTable, tableId); | ||
3721 | break; | ||
3722 | default: | ||
3723 | this.Core.UnexpectedAttribute(node, attrib); | ||
3724 | break; | ||
3725 | } | ||
3726 | } | ||
3727 | else | ||
3728 | { | ||
3729 | this.Core.ParseExtensionAttribute(node, attrib); | ||
3730 | } | ||
3731 | } | ||
3732 | |||
3733 | if (null == tableId) | ||
3734 | { | ||
3735 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id")); | ||
3736 | } | ||
3737 | |||
3738 | foreach (var child in node.Elements()) | ||
3739 | { | ||
3740 | if (CompilerCore.WixNamespace == child.Name.Namespace) | ||
3741 | { | ||
3742 | var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child); | ||
3743 | switch (child.Name.LocalName) | ||
3744 | { | ||
3745 | case "Row": | ||
3746 | this.ParseRowElement(child, childSourceLineNumbers, tableId); | ||
3747 | break; | ||
3748 | default: | ||
3749 | this.Core.UnexpectedElement(node, child); | ||
3750 | break; | ||
3751 | } | ||
3752 | } | ||
3753 | else | ||
3754 | { | ||
3755 | this.Core.ParseExtensionElement(node, child); | ||
3756 | } | ||
3693 | } | 3757 | } |
3694 | } | 3758 | } |
3695 | 3759 | ||
@@ -6155,6 +6219,9 @@ namespace WixToolset.Core | |||
6155 | case "CustomTable": | 6219 | case "CustomTable": |
6156 | this.ParseCustomTableElement(child); | 6220 | this.ParseCustomTableElement(child); |
6157 | break; | 6221 | break; |
6222 | case "CustomTableRef": | ||
6223 | this.ParseCustomTableRefElement(child); | ||
6224 | break; | ||
6158 | case "Directory": | 6225 | case "Directory": |
6159 | this.ParseDirectoryElement(child, null, CompilerConstants.IntegerNotSet, String.Empty); | 6226 | this.ParseDirectoryElement(child, null, CompilerConstants.IntegerNotSet, String.Empty); |
6160 | break; | 6227 | break; |
diff --git a/src/WixToolset.Core/Compiler_2.cs b/src/WixToolset.Core/Compiler_2.cs index 29f240f4..11063bd8 100644 --- a/src/WixToolset.Core/Compiler_2.cs +++ b/src/WixToolset.Core/Compiler_2.cs | |||
@@ -195,6 +195,9 @@ namespace WixToolset.Core | |||
195 | case "CustomTable": | 195 | case "CustomTable": |
196 | this.ParseCustomTableElement(child); | 196 | this.ParseCustomTableElement(child); |
197 | break; | 197 | break; |
198 | case "CustomTableRef": | ||
199 | this.ParseCustomTableRefElement(child); | ||
200 | break; | ||
198 | case "Directory": | 201 | case "Directory": |
199 | this.ParseDirectoryElement(child, null, CompilerConstants.IntegerNotSet, String.Empty); | 202 | this.ParseDirectoryElement(child, null, CompilerConstants.IntegerNotSet, String.Empty); |
200 | break; | 203 | break; |
diff --git a/src/WixToolset.Core/Compiler_Bundle.cs b/src/WixToolset.Core/Compiler_Bundle.cs index 2089f037..7cdb8ca0 100644 --- a/src/WixToolset.Core/Compiler_Bundle.cs +++ b/src/WixToolset.Core/Compiler_Bundle.cs | |||
@@ -914,7 +914,6 @@ namespace WixToolset.Core | |||
914 | { | 914 | { |
915 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); | 915 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); |
916 | string customDataId = null; | 916 | string customDataId = null; |
917 | var foundChild = false; | ||
918 | 917 | ||
919 | foreach (var attrib in node.Attributes()) | 918 | foreach (var attrib in node.Attributes()) |
920 | { | 919 | { |
@@ -924,6 +923,7 @@ namespace WixToolset.Core | |||
924 | { | 923 | { |
925 | case "Id": | 924 | case "Id": |
926 | customDataId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 925 | customDataId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
926 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixBundleCustomData, customDataId); | ||
927 | break; | 927 | break; |
928 | default: | 928 | default: |
929 | this.Core.UnexpectedAttribute(node, attrib); | 929 | this.Core.UnexpectedAttribute(node, attrib); |
@@ -943,7 +943,6 @@ namespace WixToolset.Core | |||
943 | 943 | ||
944 | foreach (var child in node.Elements()) | 944 | foreach (var child in node.Elements()) |
945 | { | 945 | { |
946 | foundChild = true; | ||
947 | if (CompilerCore.WixNamespace == child.Name.Namespace) | 946 | if (CompilerCore.WixNamespace == child.Name.Namespace) |
948 | { | 947 | { |
949 | var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child); | 948 | var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child); |
@@ -962,11 +961,6 @@ namespace WixToolset.Core | |||
962 | this.Core.ParseExtensionElement(node, child); | 961 | this.Core.ParseExtensionElement(node, child); |
963 | } | 962 | } |
964 | } | 963 | } |
965 | |||
966 | if (!foundChild) | ||
967 | { | ||
968 | this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName)); | ||
969 | } | ||
970 | } | 964 | } |
971 | 965 | ||
972 | /// <summary> | 966 | /// <summary> |
diff --git a/src/WixToolset.Core/Compiler_Module.cs b/src/WixToolset.Core/Compiler_Module.cs index a7d94701..2ecd9113 100644 --- a/src/WixToolset.Core/Compiler_Module.cs +++ b/src/WixToolset.Core/Compiler_Module.cs | |||
@@ -141,6 +141,9 @@ namespace WixToolset.Core | |||
141 | case "CustomTable": | 141 | case "CustomTable": |
142 | this.ParseCustomTableElement(child); | 142 | this.ParseCustomTableElement(child); |
143 | break; | 143 | break; |
144 | case "CustomTableRef": | ||
145 | this.ParseCustomTableRefElement(child); | ||
146 | break; | ||
144 | case "Dependency": | 147 | case "Dependency": |
145 | this.ParseDependencyElement(child); | 148 | this.ParseDependencyElement(child); |
146 | break; | 149 | break; |