csharpier icon indicating copy to clipboard operation
csharpier copied to clipboard

Using statement ordering and conditional compilation

Open Rudomitori opened this issue 1 year ago • 1 comments

Ordering of using statement incorrectly handles conditional compilation preprocessor directives

Input: The code is from csharpier-repos

#if MONO_SECURITY_ALIAS
extern alias MonoSecurity;
#endif

#if MONO_SECURITY_ALIAS
using MonoSecurity::Mono.Security.Interface;
using MSX = MonoSecurity::Mono.Security.X509;
using MonoSecurity::Mono.Security.X509.Extensions;
#else
using Mono.Security.Interface;
using MSX = Mono.Security.X509;
using Mono.Security.X509.Extensions;
#endif

using System;
using System.Net;
using System.Threading;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.Net.Configuration;
using System.Text.RegularExpressions;
using System.Security.Cryptography.X509Certificates;

using System.Globalization;
using System.Net.Security;
using System.Diagnostics;

Output:

#if MONO_SECURITY_ALIAS
extern alias MonoSecurity;
#endif

#else
using Mono.Security.Interface;
#endif

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.Diagnostics;
using System.Globalization;
using System.Net;
using System.Net.Configuration;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text.RegularExpressions;
using System.Threading;
using Mono.Security.X509.Extensions;
#if MONO_SECURITY_ALIAS
using MonoSecurity::Mono.Security.Interface;
using MonoSecurity::Mono.Security.X509.Extensions;
using MSX = MonoSecurity::Mono.Security.X509;
using MSX = Mono.Security.X509;

Tested in the playground for the version 0.28.1

Rudomitori avatar Jun 12 '24 05:06 Rudomitori

If I recall correctly there were a couple edge cases like this from csharpier-repos. Fixing them didn't seem straightforward and some of the official analzyers don't deal well with conditional compilation so I let them slide.

belav avatar Jun 16 '24 20:06 belav