Nova Studio Changelog

What's new in Nova Studio 7.32 CodeDOM 7.44

Dec 22, 2022
  • Fixed a possible exception when parsing invalid documentation comments, and also improved parsing of such comments.
  • Fixed determination of the iteration type in foreach loops for IEnumerables with multiple GetEnumerator() methods.

New in Nova Studio 7.32 CodeDOM 7.43 (Aug 30, 2022)

  • Fixed to relax 'ref' matching on imported COM interface method parameters in dependent DLLs.
  • Fixed check for Optional attribute on parameter declarations (for source code - metadata was ok). This was not really an issue since it was also checking for any initialization to mean it was optional).

New in Nova Studio 7.32 CodeDOM 7.42 (Aug 2, 2022)

  • Fixed to treat the conversion of a Literal as 'better' to a primitive integral type vs a pointer type when trying to choose a better method match.

New in Nova Studio 7.32 CodeDOM 7.41 (Nov 29, 2021)

  • Fixed NamedCodeObjectDictionary/NamedObjectDictionary.Remove() to leave the correct object in the dictionary when removal reduces a collection of two objects overloaded on the same name to a single object remaining.

New in Nova Studio 7.32 CodeDOM 7.40 (Jun 19, 2021)

  • Improved filtering of duplicate matches to treat generic array parameter types as more specific if they have more array ranks (such as T[][] where T is 'int' is more specific than T[] where T is 'int[]').
  • Added relaxed ref/out matching for parameters of methods in types with a "ComImport" attribute (the 'ref' keyword is not required by C# for 'ref' parameters of imported COM methods, since they tend to have many parameters, most with 'ref').
  • Fixed setting of individual modifiers on Local/FieldDecls (IsConst, IsPublic, etc) to throw an exception if the parent is a MultiLocal/FieldDecl, and also the Add() method of MultiLocal/FieldDecl to bypass such validation when forcing the modifiers of the added Local/FieldDecl to match those of the Multi.

New in Nova Studio 7.32 CodeDOM 7.39 (May 20, 2021)

  • Fixed setting of Modifiers on MultiLocalDecl/MultiFieldDecl/MultiFixedSizeBufferDecl to bypass exception checking in child instances.

New in Nova Studio 7.32 CodeDOM 7.38 (Apr 26, 2021)

  • Fixed a problem with the handling of newlines in the expressions inside interpolated strings.
  • Fixed a type argument evaluation issue for assignments in initializers.
  • Fixed type evaluation of pointer indirection operator for pointer counts greater than

New in Nova Studio 2.4 CodeDOM 7.33 (Aug 16, 2019)

  • Fixed an issue in Literal.ProcessEscapeSequences().
  • Fixed an issue with internal extension methods being treated as accessible in other assemblies.
  • Fixed a problem parsing fields with tuple types properly if proceeded with annotations.
  • Fixed to ignore case for 'exists' in Project conditional expressions.
  • Changed TypeRef.GetFullName() to include any array ranks on types.
  • Improvements to handling of comments on lambda-bodied declarations.
  • Improvements to loading of project references.

New in Nova Studio 2.4 CodeDOM 7.32 (May 27, 2019)

  • C# 7.3: Improved method resolution when arguments differ by 'in' (prefer 'in' if argument is 'in', otherwise prefer NOT 'in').
  • C# 7.2: Added support for delegates with ref and/or readonly return types.
  • C# 7.2: Fixed rendering order for 'private protected' access modifier and 'readonly ref' structs.
  • Made some static initialization methods synchronized to avoid possible re-entrancy problems.
  • Changed generated internal names for Adder/RemoverDecl to use a single underscore.

New in Nova Studio 2.4 CodeDOM 7.31 (Apr 30, 2019)

  • Expression variables in initializers and queries.
  • Stackalloc initializers.
  • 'unmanaged' generic type constraint (also System.Enum and System.Delegate - no changes required).
  • Ref local re-assignment: Ref locals and parameters can be reassigned with ' = ref '. (no changes required)
  • Tuple comparison: Tuples can now be compared with '==' and '!='. (no changes required)
  • Attributes on backing fields: Can use '[field: ...]' attributes on an auto-implemented property to target its backing field. (no changes required)
  • Indexing movable fixed buffers: Fixed buffers can be indexed into without first being pinned. (no changes required)
  • Custom fixed statement: Types that implement a GetPinnableReference() method can be used in a fixed statement. (no changes required)

New in Nova Studio 2.4 CodeDOM 7.24 (Nov 22, 2018)

  • Fixed a problem with local functions interfering with the calculated return type of lambda/anonymous methods.
  • Changed precedence of 'as' and 'is' operators from relational to additive group (all C# documentation is wrong).
  • Fixed an issue with processing of escape sequences by Literal.Value.
  • Added support for evaluated types of initializers that are arrays of delegate types.
  • Added support for compiler directives inside empty parameter lists.
  • Rendering fixes for Nova Studio related to compiler directives around list members and inside empty parameter lists.

New in Nova Studio 2.4 CodeDOM 7.23 (Nov 17, 2018)

  • Fixed a parsing issue for methods with tuple return types (C# 7).
  • Fixed to resolve Out/LocalDeclExprs in switch/for/foreach/lock target expressions (C# 7).
  • Fixed an issue with parameter matching of lambdas with 'default' return value (C# 7.1).
  • Fixed issues with parsing of conditional directives around parameter declarations, arguments, and sub-expressions.
  • Fixed MethodDeclBase.IsLocalFunction to work properly when nested in a lambda.
  • Changed Literal.Value property to return the raw text property if it can't be parsed into a valid object, primarily so that it returns the fragments of interpolated strings even though they're not valid C# literals.

New in Nova Studio 2.4 CodeDOM 7.22 (Nov 1, 2018)

  • Fix to previous change to handle forward references to local functions so that local functions inside lambdas are resolved properly.
  • Fixed to handle references to named indexers in external (COM) libraries (not legal in C# sources).

New in Nova Studio 2.4 CodeDOM 7.21 (Oct 12, 2018)

  • C# 7.2: Non-trailing named arguments.
  • C# 7.2: Reference semantics with value types: 'in' modifier on parameters (already supported 'ref readonly' return values and 'ref' and/or 'readonly' structs).
  • c# 7.2: Ref Conditional operator (already supported).
  • C# 7.2: 'private protected' access (already supported).
  • C# 7.2: Leading separator in numeric literals (already supported).
  • Added support for implicit conversions between tuples with types that have implicit conversions.
  • Improved to take 'out'/'ref' status into account when matching method parameters.
  • Fixed a parsing issue with '?' inside code comments related to '?.' support.
  • Fixed to handle forward references of local functions (nested methods).
  • Improved support for new format project files.

New in Nova Studio 2.4 CodeDOM 7.14 (Sep 24, 2018)

  • Fixed to not reference 'mscorlib' if the NoStandardLibraries tag is 'true' in the project file (in addition to 'NoStdLib' in a Configuration section).

New in Nova Studio 2.4 CodeDOM 7.13 (Sep 21, 2018)

  • Fixed a bug in Block.Insert() if a Block is passed in that could insert it at the wrong location.
  • Fixed to infer the type properly when new 'default' usage is on the right side of a binary operator like '=='.
  • Added support for .NET Core C# project type GUID.
  • Added support for parsing of project.assets.json file to determine package reference paths.

New in Nova Studio 2.4 CodeDOM 7.12 (Aug 6, 2018)

  • Fixed parsing of decimal literals containing underscores.
  • Fixed a problem parsing Deconstructions as ForEach loop variables when they don't have a shared type, and also if there are unused tokens in the stream (including comments).
  • Fixed a parsing issue with LocalDeclExprs inside LINQ statements in certain scenarios.
  • Fixed parsing of package references in project files to handle Version as a body element in addition to an attribute.
  • Fixed a parsing issue with switch cases having a 'when' clause in some scenarios that conflict with local variable expression parsing.
  • Fixed to prevent implicit conversions of the If expression of Conditionals.
  • Fixed Literal.DetermineValue() to properly handle binary constants and underscores.
  • Added support for nested Deconstructions, and improved handling of 'shared' var types.
  • Added support for Deconstruct() extension methods, added a HiddenRef to Deconstruction for any Deconstruct() method used, and added support for matching the parameter count of such methods when resolving uses of them.
  • Added support for adding LocalDeclExpr symbols in a 'using' expression to the parent scope.
  • Added support for 'ref' on the return type of delegate declarations.
  • Improvement to MethodDeclBase.IsLocalFunction property.

New in Nova Studio 2.4 CodeDOM 7.11 (Jul 16, 2018)

  • C# 7.1: Default literal expression support.
  • C# 7.1: Inferred tuple element name support (supported since 7.2).
  • C# 7.1: Async main support (always supported).
  • Changed ThrowExpr to return a null type (which is implicitly convertible to any other type).
  • Fixed unresolving to skip nullable built-in types.
  • Fixed a problem with parsing of NullSafeIndex ('?[') due do Conditional taking precedence.
  • Fixed an issue resolving overridden methods with lambda parameters if named arguments were used.
  • Fixed an issue with tuples incorrectly indicating that they had an unresolved field type in certain scenarios.
  • Fixed a problem resolving methods in base interfaces when the same method is found via different paths through the base interfaces (meaning the same interface appears more than once) and type arguments are involved and resolve to different types on the different paths.

New in Nova Studio 2.4 CodeDOM 7.2 (Jul 10, 2018)

  • Full C# 7.0 support.

New in Nova Studio 2.4 CodeDOM 6.8 (Jul 7, 2016)

  • Added support for NuGet style (JSON) project dependencies, and DNXCore dependencies for .NETPortable projects.
  • Added support for .NETCore 5.0 framework reference assemblies, NuGet style (JSON) dependencies, and individual folders.
  • Added support for TargetPlatformVersion/MinVersion and BaseIntermediateOutputPath in project files.
  • Improved support for API calls using project file macros, and added preliminary support for local properties.
  • Modified Nova Studio to be Large Address aware so it can use more than 1.3GB of memory with a 32-bit build.

New in Nova Studio 2.3 CodeDOM 6.7 (Jul 7, 2016)

  • Fixed an issue finding the better matching method when one has params and both have unused optional parameters.
  • Added special handling for '.' member lookups on the result of a call involving a '?.' operator.
  • Fixed an issue with the evaluation of the inferred types of 'from' clauses after the first one.
  • Fixed an issue in TypeDefinitionUtil.FindTypeParameterIndex(), so it works identically to the TypeUtil version.
  • Added null ref checks to GACUtil.CompareVersions().

New in Nova Studio 2.3 CodeDOM 6.6 (Jul 7, 2016)

  • Improved TypeParameterRef.IsSameRef() to return true for type parameters of overridden generic methods even if the name differs from the equivalent one in the base method. Also improved TypeParameter.ResolveRef() to evaluate any type parameter constraint in the current scope before resolving a member on it.
  • Added PropertyDefinitionUtil.IsIndexed(), changed all code to use it instead of HasParameters, and improved IsIndexed() on both metadata types to ignore any property parameters if they are optional.
  • Improved FromClause to fallback to a Where() method for evaluation if no Select() method exists.
  • Improved to ignore lambdas with undetermined inferred parameter types when determining the type of an initializer list, and improved TypeRef.GetCommonType() to allow MethodRefs to be treated as common with generic Func types.
  • Relaxed extension method lookups to not require that class be sealed (might not be in other languages or IL code).
  • Added support for matching overridden methods where a 'params' parameter in the base method declaration is not specified as 'params' in the override.
  • Fixed a problem with correctly finding all other parts of partial types in certain scenarios involving nested generic types.
  • Fixed to handle a reference to a internal member of an external reference to a type, where the type is actually declared in the current project.
  • Fixed to translate any Mono/Reflection global namespace of "" on a type to "global".
  • Fixed 'goto case' matching to handle a constant for the switch expression.
  • Fixed to handle an operator overload method in an outer class with the same name.
  • Fixed an issue with resolving attributes in a specific scenario where an alias is used.
  • Fixed to prefer non-dynamic types when resolving overloaded methods.
  • Fixed to load SDK files from any hint path over their default locations.

New in Nova Studio 2.3 CodeDOM 6.5 (Jul 7, 2016)

  • Fixed the ChildList indexer setter to check that the parent of the replaced object is set properly.
  • Fixed some issues with properly resolving the implicit Add method calls for collection initializers.
  • Fixed a problem resolving attributes on parameter declarations of delegate and indexer declarations.
  • Fixed an issue where moving attributes between code objects could result in attributes with a null parent link.
  • Fixed an issue matching overrides of methods with parameters having a type parameter type.
  • Fixed problems determining the correct parent expression for resolving implicit indexers inside initializers.
  • Fixed events declared as multi-field declarations in interfaces to correctly default to public access.
  • Fixed to convert a non-nullable value type return value from a method called on a '?.' expression into a nullable type.
  • Fixed to skip type argument matching for references passed to a 'nameof' operator.
  • Fixed a problem matching extension methods in 'using static' types.
  • Fixed an issue with variables of 'var' type that evaluate to 'dynamic' and are invoked as delegates.
  • Fixed a problem with output type inferencing involving arrays.
  • Fixed Literal.GetFormatString() to process escape sequences, or NOT if an optional bool parameter is passed.
  • Fixed a cast to 'dynamic' to properly evaluate as 'dynamic' instead of 'object' type.
  • Fixed an issue matching lambdas with object parameters with delegates with parameters of dynamic type.
  • Added support for C#'s unique overloading of And/Or operators using BitwiseAnd/BitwiseOr (and True/False).
  • Corrected the precedence of the 'await' operator.
  • Added handling of 'goto case null'.

New in Nova Studio 2.3 CodeDOM 6.4 (Jul 7, 2016)

  • Fixed an issue with the caching of extension methods added in the last release that could cause resolve errors.
  • Fixed a problem with the proper evaluation of nested conditional compilation directives.
  • Fixed a resolve issue involving a method group with a generic return type passed to a generic method with inferred type arguments.
  • Fixed a resolve issue involving proper type inference when a 'null' literal and lambdas are involved.
  • Added support for conditional compiler directives around the header of a property declaration.
  • Added handling of '@' prefix on constructor names (to support a sloppy code generator).
  • Added GetFormatString()/GetFormatArguments() methods to Literal for interpolated strings.

New in Nova Studio 2.3 CodeDOM 6.3 (Jul 7, 2016)

  • Possible BREAKING change: Split new NamedObjectDictionary/NamedObjectGroup out from existing NamedCodeObjectDictionary/NamedCodeObjectGroup classes - the first can hold metadata (IMemberDefinition/MemberInfo) objects, while the second is now restricted to INamedCodeObjects. Client code making use of NamedCodeObjectGroup should be changed to use NamedObjectGroup instead if compile errors occur. This change was made to support part of the implementation of the caching of extension method lookups for better performance (see below).
  • Fixed a resolving problem involving delegate fields in base classes with inferred type arguments.
  • Added support for InternalsVisibleTo assembly attributes that require resolving of the entire containing code unit in order to evaluate the string constant parameter (due to references to constant strings declared later in the file).
  • Performance: Removed all uses of HasFlag() for up to 10% better performance.
  • Performance: Added caching of extension method lookups on namespaces for up to 33% better performance on very large projects with heavy use of extension methods (minor or insignificant difference on smaller projects or with little extension method use).
  • Performance: Added caching of other parts of partial types for a significant performance improvement when there are a lot of partial types. The cached lists of other parts are reset for all parts when any TypeDecl is added/removed to/from a parent NamespaceDecl or TypeDecl.
  • Performance: Improved handling of messages by Solution and CodeUnit, for much better performance on projects with very large numbers of messages (such as errors).
  • UI Performance: Improved performance of very large numbers of messages (such as errors) in the UI.

New in Nova Studio 2.1 CodeDOM 6.2 (Jul 7, 2016)

  • Added support for implicit conversion of Literal interpolated strings to parameters of type IFormattable (C# 6.0).
  • Fixed line/col info for expression objects parsed from interpolated strings.
  • Added UI support in Nova Studio for expression objects parsed from interpolated strings.
  • Fixed a crash in Mono Cecil if the header of a loaded DLL has an empty version string.

New in Nova Studio 2.1 CodeDOM 6.1 (Jul 7, 2016)

  • Added support for lambda expression syntax for operator and indexer declarations (C# 6.0).
  • Updated PropertyDecl.IsAutomatic to work correctly for read-only or write-only automatic properties (C# 6.0).
  • Added parsing of expressions embedded in interpolated string literals (C# 6.0).
  • Added Literal.Value cached property (replaces Literal.GetValue()), and IsString/IsChar/IsNumeric/IsBool/IsInt, etc properties.
  • Added Index.FindTypeArgument() to allow IndexerRef.EvaluateType() to revert to the default behavior of evaluating any type arguments without causing any recursion problems.
  • Added Project.AddExistingFile() method, and fixed an issue with Solution correctly saving the relative paths of Project files in the '.sln' file.
  • Fixed formatting issues for lambda expressions used to initialize methods/properties in lambda expression format.
  • Fixed an issue with parsing nested Conditionals involving nullable types and an As operator.
  • Fixed an issue parsing generic method references with no arguments if parenthesized like a cast.
  • Fixed a problem parsing methods with the name 'async' due to lambda parsing logic.
  • Fixed problem handling 'await' or 'nameof' as identifiers in certain contexts.
  • Fixed Index.EvaluateType() to properly handle a null expression, which occurs for index initializers.
  • Improved parsing of unrecognized pragmas.

New in Nova Studio 2.0 CodeDOM 6.0 (Jul 7, 2016)

  • C# 6.0: Added support for Index Initializers.
  • Improved to only load interop types from referenced assemblies if the Embed Interop Types flag is True, and also further improved support for Type Equivalence for embedded interop types.
  • Fixed text rendering of null-safe index operator.
  • Fixed initializers to properly handle 'null' literals when evaluating the common type.
  • Fixed to not load types from referenced shared projects since the source files are included directly.
  • Fixed some resolving problems when passing lambdas as named arguments.
  • Fixed a resolving issue involving method references passed as named arguments that was resulting in a warning instead of an error.
  • Increased the version to 6.0 to reflect full C# 6.0 compatiblity.