Skip to content

Commit 118d8ee

Browse files
author
Kapil Borle
committed
Fixes some bugs in UseToExportFieldsInManifest rule.
1 parent a406d8f commit 118d8ee

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

Rules/UseToExportFieldsInManifest.cs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//
1212

1313
using System;
14+
using System.Linq;
1415
using System.Collections.Generic;
1516
using System.Management.Automation.Language;
1617
using System.Management.Automation;
@@ -97,19 +98,26 @@ private bool HasAcceptableExportField(string key, HashtableAst hast, string scri
9798
extent = null;
9899
foreach (var pair in hast.KeyValuePairs)
99100
{
100-
if (pair.Item1 is StringConstantExpressionAst
101-
&& key.Equals((pair.Item1 as StringConstantExpressionAst).Value,
102-
StringComparison.OrdinalIgnoreCase))
103-
{
104-
//checks for wildcard in the entry.
105-
var elementWithWildcard = pair.Item2.Find(x => x is StringConstantExpressionAst
106-
&& WildcardPattern.ContainsWildcardCharacters((x as StringConstantExpressionAst).Value), false);
107101

102+
var keyStrConstAst = pair.Item1 is StringConstantExpressionAst ? pair.Item1 as StringConstantExpressionAst : null;
103+
104+
if (keyStrConstAst != null && keyStrConstAst.Value.Equals(key, StringComparison.OrdinalIgnoreCase))
105+
{
106+
// Checks for wildcard character in the entry.
107+
var strConstAstElements = from element in pair.Item2.FindAll(x => x is StringConstantExpressionAst, false)
108+
select element as StringConstantExpressionAst;
109+
var elementWithWildcard = strConstAstElements.FirstOrDefault(x => x != null
110+
&& WildcardPattern.ContainsWildcardCharacters(x.Value));
111+
108112
if (elementWithWildcard == null)
109113
{
110-
//checks for $null in the entry.
111-
var nullAst = pair.Item2.Find(x => x is VariableExpressionAst
112-
&& (x as VariableExpressionAst).ToString().Equals("$null", StringComparison.OrdinalIgnoreCase), false);
114+
// Checks for $null in the entry.
115+
var varAstElements = from element in pair.Item2.FindAll(x => x is VariableExpressionAst, false)
116+
select element as VariableExpressionAst;
117+
// VariablePath property is never null hence we don't need to check for it.
118+
var nullAst = varAstElements.FirstOrDefault(x => x != null
119+
&& x.VariablePath.IsUnqualified
120+
&& x.VariablePath.UserPath.Equals("null", StringComparison.OrdinalIgnoreCase));
113121

114122
if (nullAst == null)
115123
{

0 commit comments

Comments
 (0)