66using System . Collections . Generic ;
77using System . Globalization ;
88using System . Management . Automation . Language ;
9+ using System . Linq ;
10+
11+
912
1013#if ! CORECLR
1114using System . ComponentModel . Composition ;
@@ -43,7 +46,7 @@ public override IEnumerable<DiagnosticRecord> AnalyzeScript(Ast ast, string file
4346 if ( ast == null ) throw new ArgumentNullException ( Strings . NullAstErrorMessage ) ;
4447
4548 // Find all MemberExpressionAst nodes representing invalid unquoted multi-dot values
46- IEnumerable < Ast > invalidAsts = ast . FindAll ( testAst =>
49+ IEnumerable < MemberExpressionAst > invalidAsts = ast . FindAll ( testAst =>
4750 // An expression with 3 or more dots is seen as a double with an additional property
4851 testAst is MemberExpressionAst memberAst &&
4952 // The first two values are seen as a double
@@ -55,37 +58,35 @@ memberAst.Member is ConstantExpressionAst constantAst &&
5558 constantAst . StaticType == typeof ( double ) // e.g.: [Version]1.2.3.4
5659 ) ,
5760 true
58- ) ;
59-
60- if ( invalidAsts != null ) {
61- var correctionDescription = Strings . InvalidMultiDotValueCorrectionDescription ;
62- foreach ( MemberExpressionAst invalidAst in invalidAsts )
63- {
64- var corrections = new List < CorrectionExtent > {
65- new CorrectionExtent (
66- invalidAst . Extent . StartLineNumber ,
67- invalidAst . Extent . EndLineNumber ,
68- invalidAst . Extent . StartColumnNumber ,
69- invalidAst . Extent . EndColumnNumber ,
70- "'" + invalidAst . Extent . Text + "'" ,
71- fileName ,
72- correctionDescription
73- )
74- } ;
75- yield return new DiagnosticRecord (
76- string . Format (
77- CultureInfo . CurrentCulture ,
78- Strings . InvalidMultiDotValueError ,
79- invalidAst . Extent . Text
80- ) ,
81- invalidAst . Extent ,
82- GetName ( ) ,
83- DiagnosticSeverity . Error ,
61+ ) . Cast < MemberExpressionAst > ( ) ;
62+
63+ var correctionDescription = Strings . InvalidMultiDotValueCorrectionDescription ;
64+ foreach ( MemberExpressionAst invalidAst in invalidAsts )
65+ {
66+ var corrections = new List < CorrectionExtent > {
67+ new CorrectionExtent (
68+ invalidAst . Extent . StartLineNumber ,
69+ invalidAst . Extent . EndLineNumber ,
70+ invalidAst . Extent . StartColumnNumber ,
71+ invalidAst . Extent . EndColumnNumber ,
72+ "'" + invalidAst . Extent . Text + "'" ,
8473 fileName ,
85- invalidAst . Extent . Text ,
86- suggestedCorrections : corrections
87- ) ;
88- }
74+ correctionDescription
75+ )
76+ } ;
77+ yield return new DiagnosticRecord (
78+ string . Format (
79+ CultureInfo . CurrentCulture ,
80+ Strings . InvalidMultiDotValueError ,
81+ invalidAst . Extent . Text
82+ ) ,
83+ invalidAst . Extent ,
84+ GetName ( ) ,
85+ DiagnosticSeverity . Error ,
86+ fileName ,
87+ invalidAst . Extent . Text ,
88+ suggestedCorrections : corrections
89+ ) ;
8990 }
9091 }
9192
0 commit comments