Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StackOverflowException crashes Visual Studio on deeply nested expression #1033

Closed
filippobarbuscatec opened this issue Sep 14, 2023 · 7 comments

Comments

@filippobarbuscatec
Copy link

Hi,
we have some problems converting a .NET Core 6 project written in VB.NET into C#.
We have a solution with various projects. The tool works flawlessly on medium-sized projects and single files.
On larger projects, after a few minutes Visual Studio restarts without giving any error messages.
We noticed that the visual studio process uses up 100% of the CPU for the minutes it works and takes up all the available RAM.
In the event log there is the following error:

Application name generating the error: devenv.exe, version: 17.7.34024.191, timestamp: 0x64e7d3da
Form name generating the error: Microsoft.CodeAnalysis.VisualBasic.ni.dll, version: 4.700.23.41608, timestamp: 0xbc31604d
Error code: 0xc00000fd
Offset error 0x0000000000a2ab8f
Process ID generating the error: 0x0xB438
Launch time of the application generating the error: 0x0x1D9E62070FDCA25
Path to the application generating the error: C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\devenv.exe
Path to the form that generated the error: C:\Windows\assembly\NativeImages_v4.0.30319_64\Microsoft.Cf3d5ce20#\1a4d62a8a75088940c54a1deb5d4e1e0\Microsoft.CodeAnalysis.VisualBasic.ni.dll
Report ID: 4a9825c0-e276-459d-91a5-ec33e668f4ec
Full packet name generating the error:
Application ID related to the packet generating the error:

Details

  • The extension we are using is version 9.2.3.0
  • The Visual Studio version is the 2022, to be precise, 17.7.3
  • The project framework is .NET Core 6
@GrahamTheCoder
Copy link
Member

GrahamTheCoder commented Sep 16, 2023

Thanks for the report. It may be possible to make a more incremental process to solve this. I've forgotten what stopped me doing that previously but will take a look. In theory there's an on disk cache, but I'm probably relying on that too much. How big are your projects in terms of files and lines?
Big designer files have caused issues in the past

@filippobarbuscatec
Copy link
Author

HI
Here is the data of the project on which we are testing the extension:

  • Source code lines: 103,410
  • Files with code: 249
  • Classes: 401

In this project there are files with over 6000 lines of code
Consider that among the projects I have to convert this is not the largest and I have projects with Forms where the Designer file is quite large.

What can I do to help you debug the problem?
Is there any LOG I can pass on to you?
Thank you

@GrahamTheCoder
Copy link
Member

Ah ok, so the problem is likely the size of individual files rather than total project/solution size. So I think it's the same as #877 which has some suggestions like splitting big files into partial classes. Tweaking the options around formatting and timeouts also may help.
I'll try again to reproduce this today. Obviously if you can provide the project to me privately that would be a huge help, the other thing you can do is create a project containing just the single biggest file, and seeing if that converts successfully. And finally you can run another instance of the code converter to debug and see where the converter crashes. Last time I looked I think it was in roslyns formatting, but would be good to confirm.

@filippobarbuscatec
Copy link
Author

HI
I cannot provide the project because it is the property of the company where I work.
I did a test in a project with only the largest file and it worked.
I tried running the command line tool and the error it gives is:

Phase 1 of 2:

* eWorking\eW.eWorking.DataLayer\Documenti\DocumentiDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Anagrafica\NucleiFamiliariComponentiDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Anagrafica\NucleiFamiliariDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Modelli\ModelliDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Pratica\PraticaDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Procedimenti\ProgettoDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Procedimenti\FasiProcedimentoDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Organigramma\FunzioniAssegnazioni\FunzioneAssegnazioneModDocumentiDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Organigramma\FunzioniAssegnazioni\FunzioneAssegnazioneModDocumentiDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Procedimenti\ProgettoDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Organigramma\AddettiDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Documenti\DocumentiPassaggiDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Anagrafica\NucleiFamiliariDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Appalti\ContrattoDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Modelli\ModelliDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Documenti\DocumentiAllegatiDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Anagrafica\NucleiFamiliariComponentiDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Zoom\ZoomDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\eWorkingServer\ModelliPCASADataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Appalti\ContrattoDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Organigramma\AddettiDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\FatturaPA\FatturaPassivaDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Documenti\DocumentiAllegatiDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Documenti\TipoDocumentoDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\eWorkingServer\ModelliPCASADataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Anagrafica\AnagrafeTributariaDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\FatturaPA\FatturaPassivaDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Procedimenti\ProcedimentoDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Zoom\ZoomDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\MessaggiDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Procedimenti\FasiProcedimentoDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\SistemaGestionale\MenuOpzioneDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\MessaggiDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\ExportXml\ExportXmlDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Anagrafica\AnagrafeTributariaDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\RegistroOperatore\RegistroOperatoreDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\SistemaGestionale\MenuOpzioneDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Query\QueryDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\Procedimenti\ProcedimentoDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\Pratica\FasiPraticaDataMapper.vb - conversion started

* eWorking\eW.eWorking.DataLayer\ExportXml\ExportXmlDataMapper.vb - conversion succeeded

* eWorking\eW.eWorking.DataLayer\eWorkingServer\CalcoloResiduiServiceDataMapper.vb - conversion started

Process is terminated due to StackOverflowException.

To do the last check you were asking about, how do I run another instance of the code converter for debugging?

@GrahamTheCoder
Copy link
Member

GrahamTheCoder commented Sep 20, 2023

Thanks, interesting that it's a stackoverflow and in phase 1. That sounds like a different issue to the one I linked to. Getting the stack trace will be very useful there. To debug the code converter, either run it from source, or just start an instance of visual studio, and click something like debug, attach, then select devenv.exe for the instance where you are about to attempt the conversion. By default it should break when the stackoverflow exception happens and then you can look at the stack trace and copy paste it.
Knowing exactly which file it's working on can also be seen from the locals higher up the stack trace and may help narrow things down. It does several in parallel so may not be the last listed in the log you posted. It could be any of these that don't have a matching "succeeded":

  • eWorking\eW.eWorking.DataLayer\Documenti\DocumentiDataMapper.vb - conversion started
  • eWorking\eW.eWorking.DataLayer\Documenti\DocumentiPassaggiDataMapper.vb - conversion started
  • eWorking\eW.eWorking.DataLayer\Documenti\TipoDocumentoDataMapper.vb - conversion started
  • eWorking\eW.eWorking.DataLayer\Pratica\FasiPraticaDataMapper.vb - conversion started
  • eWorking\eW.eWorking.DataLayer\Pratica\PraticaDataMapper.vb - conversion started
  • eWorking\eW.eWorking.DataLayer\Query\QueryDataMapper.vb - conversion started
  • eWorking\eW.eWorking.DataLayer\RegistroOperatore\RegistroOperatoreDataMapper.vb - conversion started
  • eWorking\eW.eWorking.DataLayer\eWorkingServer\CalcoloResiduiServiceDataMapper.vb - conversion started

You may find that one of them has a very long/deeply nested expression like "3 + 4 + 5 +6 + ...". Another thing you could try is delete the files mentioned (assuming they're safely saved elsewhere), and try the conversion again.

Thanks for your help!

@filippobarbuscatec
Copy link
Author

HI
I debugged the problem and identified which files were causing the problem.
In both cases there was a very long concatenated string variable for example:

dim str as string = "row 1" & vbCrLf & "row 2" & vbCrLf & "row 3" & vbCrLf & "row 4" & vbCrLf & "row 5" & vbCrLf & "row 6" & vbCrLf & "row 7" & vbCrLf & "row 8" & vbCrLf & "row 9" & vbCrLf & "row 10" & vbCrLf & "row 11" & vbCrLf & "row 12" & vbCrLf & "row 13" & vbCrLf & "row 14" & vbCrLf & "row 15" & vbCrLf & "row 16" & vbCrLf & "row 17" & vbCrLf & "row 18" & vbCrLf & "row 19" & vbCrLf & "row 20" & vbCrLf & "row 21" & vbCrLf & "row 22" & vbCrLf & "row 23" & vbCrLf & "row 24" & vbCrLf & "row 25" & vbCrLf & "row 26" & vbCrLf & "row 27" & vbCrLf & "row 28" & vbCrLf & "row 29" & vbCrLf & "row 30" & vbCrLf & "row 31" & vbCrLf & "row 32" & vbCrLf & "row 33" & vbCrLf & "row 34" & vbCrLf & "row 35" & vbCrLf & "row 36" & vbCrLf & "row 37" & vbCrLf & "row 38" & vbCrLf & "row 39" & vbCrLf & "row 40" & vbCrLf & "row 41" & vbCrLf & "row 42" & vbCrLf & "row 43" & vbCrLf & "row 44" & vbCrLf & "row 45" & vbCrLf & "row 46" & vbCrLf & "row 47" & vbCrLf & "row 48" & vbCrLf & "row 49" & vbCrLf & "row 50" & vbCrLf & "row 51" & vbCrLf & "row 52" & vbCrLf & "row 53" & vbCrLf & "row 54" & vbCrLf & "row 55" & vbCrLf & "row 56" & vbCrLf & "row 57" & vbCrLf & "row 58" & vbCrLf & "row 59" & vbCrLf & "row 60" & vbCrLf & "row 61" & vbCrLf & "row 62" & vbCrLf & "row 63" & vbCrLf & "row 64" & vbCrLf & "row 65" & vbCrLf & "row 66" & vbCrLf & "row 67" & vbCrLf & "row 68" & vbCrLf & "row 69" & vbCrLf & "row 70" & vbCrLf & "row 71" & vbCrLf & "row 72" & vbCrLf & "row 73" & vbCrLf & "row 74" & vbCrLf & "row 75" & vbCrLf & "row 76" & vbCrLf & "row 77" & vbCrLf & "row 78" & vbCrLf & "row 79" & vbCrLf & "row 80" & vbCrLf & "row 81" & vbCrLf & "row 82" & vbCrLf & "row 83" & vbCrLf & "row 84" & vbCrLf & "row 85" & vbCrLf & "row 86" & vbCrLf & "row 87" & vbCrLf & "row 88" & vbCrLf & "row 89" & vbCrLf & "row 90" & vbCrLf & "row 91" & vbCrLf & "row 92" & vbCrLf & "row 93" & vbCrLf & "row 94" & vbCrLf & "row 95" & vbCrLf & "row 96" & vbCrLf & "row 97" & vbCrLf & "row 98" & vbCrLf & "row 99" & vbCrLf & "row 100" & vbCrLf & "row 101" & vbCrLf & "row 102" & vbCrLf & "row 103" & vbCrLf & "row 104" & vbCrLf & "row 105" & vbCrLf & "row 106" & vbCrLf & "row 107" & vbCrLf & "row 108" & vbCrLf & "row 109" & vbCrLf & "row 110" & vbCrLf & "row 111" & vbCrLf & "row 112" & vbCrLf & "row 113" & vbCrLf & "row 114" & vbCrLf & "row 115" & vbCrLf & "row 116" & vbCrLf & "row 117" & vbCrLf & "row 118" & vbCrLf & "row 119" & vbCrLf & "row 120" & vbCrLf & "row 121" & vbCrLf & "row 122" & vbCrLf & "row 123" & vbCrLf & "row 124" & vbCrLf & "row 125" & vbCrLf & "row 126" & vbCrLf & "row 127" & vbCrLf & "row 128" & vbCrLf & "row 129" & vbCrLf & "row 130" & vbCrLf & "row 131" & vbCrLf & "row 132" & vbCrLf & "row 133" & vbCrLf & "row 134" & vbCrLf & "row 135" & vbCrLf & "row 136" & vbCrLf & "row 137" & vbCrLf & "row 138" & vbCrLf & "row 139" & vbCrLf & "row 140" & vbCrLf & "row 141" & vbCrLf & "row 142" & vbCrLf & "row 143" & vbCrLf & "row 144" & vbCrLf & "row 145" & vbCrLf & "row 146" & vbCrLf & "row 147" & vbCrLf & "row 148" & vbCrLf & "row 149" & vbCrLf & "row 150"

this causes VisualStudio to stackoverflow

@GrahamTheCoder
Copy link
Member

Thanks for digging into this. The fundamental pattern the converter uses is to recurse down the syntax tree structure, and each term concatenated together in your example is another layer of depth to that tree. The only other time I've seen this happen was also for a binary expression, so it could be worth trying to create a fix for this, even if the fix is merely to abort for that expression rather than let a StackOverflowException happen which will always kill the process.

@GrahamTheCoder GrahamTheCoder changed the title crash Visual Studio on big project StackOverflowException crashes Visual Studio on deeply nested expression Sep 22, 2023
GrahamTheCoder added a commit that referenced this issue Oct 27, 2023
Only worth doing this since it's a really easy way to cause an error that's been seen by multiple real users. Not planning to protect against every possible version of this, since that would add a lot of complexity for a tiny reward
BrianFreemanAtlanta added a commit to BrianFreemanAtlanta/CodeConverter that referenced this issue Feb 28, 2024
* 9.0.3

* Do not run default code from UI against real converter to save on execution costs

* Apply timeout to simplification

* 9.0.4

* Bump node-forge from 0.10.0 to 1.3.1 in /Web/ClientApp

Bumps [node-forge](https://github.com/digitalbazaar/forge) from 0.10.0 to 1.3.1.
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](digitalbazaar/forge@0.10.0...v1.3.1)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump json-schema from 0.3.0 to 0.4.0 in /Web/ClientApp

Bumps [json-schema](https://github.com/kriszyp/json-schema) from 0.3.0 to 0.4.0.
- [Release notes](https://github.com/kriszyp/json-schema/releases)
- [Commits](kriszyp/json-schema@v0.3.0...v0.4.0)

---
updated-dependencies:
- dependency-name: json-schema
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update CHANGELOG.md

* VB -> CS: Continue the correct of several continuable nested blocks - fixes icsharpcode#946

* Dedupe multiple exit/continue variables

* VB -> CS: Declare inline variable when referencing anonymously in VB - fixes icsharpcode#949

* At least avoid NRE in icsharpcode#948

Doesn't actually fix orderby and select of group though

* Update vb2cs_bug_report.md

* Update cs2vb_bug_report.md

* Update bug_report.md

* Bump loader-utils from 1.4.0 to 1.4.1 in /Web/ClientApp

Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.1/CHANGELOG.md)
- [Commits](webpack/loader-utils@v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump minimatch and recursive-readdir in /Web/ClientApp

Bumps [minimatch](https://github.com/isaacs/minimatch) and [recursive-readdir](https://github.com/jergason/recursive-readdir). These dependencies needed to be updated together.

Updates `minimatch` from 3.0.4 to 3.1.2
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Commits](isaacs/minimatch@v3.0.4...v3.1.2)

Updates `recursive-readdir` from 2.2.2 to 2.2.3
- [Release notes](https://github.com/jergason/recursive-readdir/releases)
- [Changelog](https://github.com/jergason/recursive-readdir/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jergason/recursive-readdir/commits/v2.2.3)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
- dependency-name: recursive-readdir
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient from 4.8.3 to 4.8.5 in /CommandLine/CodeConv

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.3 to 4.8.5.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient in /CommandLine/CodeConv.NetFramework

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.1 to 4.8.5.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient from 4.8.2 to 4.8.5 in /Func

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.2 to 4.8.5.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient from 4.8.1 to 4.8.5 in /Vsix

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.1 to 4.8.5.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient from 4.8.1 to 4.8.5 in /Web

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.1 to 4.8.5.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump loader-utils from 1.4.1 to 1.4.2 in /Web/ClientApp

Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.1 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](webpack/loader-utils@v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update README.md

* Remove global json and see what happens

* Temporarily disable these tests until they work with dot net 7

* Wait for build to finish!

* Update README.md

* Change build order in advance of using this in tests

* Don't use InitializeComponent in temp file

* Ignore temp files with InitializeComponent

* Splits static and instance handlers and include property ones icsharpcode#967

* Recommend VS2022

We'll likely need to drop VS2019 support to dodge the bugs caused by various combinations of the libraries

* Update README.md

* Try running exe

* nuget update all

* Use IsKind as required in later versions of codeanalysis

* Satisfy new API requirements

* Downgrade to 4.2.0 to avoid bugs in 4.3 and 4.4

Note: Needed to upgrade >3.11 to avoid dotnet/msbuild#7873
Needed to downgrade < 4.3 to avoid dotnet/roslyn#63780

* Revert attempt to run command line, even though it'd likely now work

* Update expectations (sane indentation) for what the new library does

* Ditch global.json again

* Try to pick a consistent set of dependencies based on the codeanalysis 4.2.0

* Ensure full error details appear in exception (not just log)

* Record version used

* Output version when available

* Block versions before 17.2 which will fail to load after this PR

* 9.1.0

* Undo VS2019 incompatible changes

* Update non-user-facing nuget packages

* Manually install System.Memory to get assembly version 4.1.2 and workaround dotnet/msbuild#7873

* Update CHANGELOG.md

* Update README.md

* Multiline strings correctly followed by a newline - fixes icsharpcode#970

* 9.1.1 (9.1.0 was never released)

* Update CHANGELOG.md

* Update README.md

* Remove converter error from icsharpcode#965 (still creates compile error) - closes icsharpcode#965

* Add test for icsharpcode#975 - closes icsharpcode#975

* Add to changelog

* Err on the side of caution for array types - fixes icsharpcode#962

* Remove todo that appears to be done

* Bump json5 from 1.0.1 to 1.0.2 in /Web/ClientApp

Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Handle the case when the event container doesn't exist - relates to icsharpcode#977 icsharpcode#979

* Revert unintended change

* 9.1.2

* Sketch of solution for icsharpcode#982

* Add tests to refine details

* Rearrange methods

&& and || are special for not being applicable to nullable objects hence their special handling to get the value

* More tests

* Changelog

* Replace newline with specified character - fixes icsharpcode#973

* Fix test case compilation error - fixes icsharpcode#985

* Test tweaks

* 9.1.3

* Remove crash preventer which ironically now causes crashes - fixes icsharpcode#986

* Convert more targets matching common pattern

Existing MultiFileSolutionAndProjectTests cover this, the regex is generalised to work for other things like UWP projects
icsharpcode#988

* Add ToString when concatenating a string and an object - fixes icsharpcode#974

* Fixup other tests to use ToString

* Denied

CSC : error CS1617: Invalid option '11.0' for /langversion. Use '/langversion:?' to list supported values. [D:\a\CodeConverter\CodeConverter\CodeConverter\CodeConverter.csproj]

Build FAILED.

CSC : error CS1617: Invalid option '11.0' for /langversion. Use '/langversion:?' to list supported values. [D:\a\CodeConverter\CodeConverter\CodeConverter\CodeConverter.csproj]
    0 Warning(s)
    1 Error(s)

* Enable arm64 vsix

* Bump webpack from 5.65.0 to 5.76.1 in /Web/ClientApp

Bumps [webpack](https://github.com/webpack/webpack) from 5.65.0 to 5.76.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](webpack/webpack@v5.65.0...v5.76.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* 9.2.0 - first arm64 compatible

* CType(Nothing, Date?) now converts to default(DateTime?) - fixes icsharpcode#994

* Conditional indexer now converted - fixes icsharpcode#993

* 9.2.1

* Fix issue icsharpcode#998

* Fix issue icsharpcode#1000

* Update CHANGELOG.md

* Fix issue icsharpcode#1003

* Update CHANGELOG.md

* Replace self too

* Set some fallback logic for picking name

* Allow object initializer to be self referential - fixes icsharpcode#1002

* Use different example

* Show where the comments end up

* Make progress each recursion - fixes icsharpcode#1007

* 9.2.2

* Pass through statements

* Move try/catch logic all to the same spot - and reuse method body visitor

* Generate a horrible do loop with a switch statement for handlers

TODO:
* Deal with non-returning code paths
* Ensure loops within the method can still break/continue as expected

* Handle one very specific case

* Handle nulls and remove comment from old plan

* Separate method

* Neaten up when there's no fall through

* Add to changelog

* Implement icsharpcode#1008 - could be spruced up with eg code samples, currently only taken the Description -> respective PackageReadme.md

* Update actions versions

* Specifically use 1.0.6 action that is using node 16

* If written or inherited, a property is generated which will do the hookup upon assignment

* Push event assignment to end of constructor - fixes icsharpcode#967

* Passing test - closes icsharpcode#991

* Changelog and test tweak

* Prevent source mapping for field initializers hoisted to constructor - fixes icsharpcode#1017

* Refine IsDefinitelyStatic

* Somewhat ugly mechanism for detecting when within an expression tree

* When converting "Is" and "IsNot" within an expression tree, use "==" - fixes icsharpcode#1015

* Mark WhereClauseSyntax as always boolean in CSharp - fixes icsharpcode#894

* Worked around "CONVERSION ERROR: usingKeyword" bug caused by VS 17.7.0 preview 2 - fixes icsharpcode#1019

Note the added test hasn't been seen to fail since updating the nuget package to the preview caused another issue I'll look into

* Don't use patterns when name is reusable - relates to icsharpcode#1011

* Try to precisely cover each case that requires a single execution

* Latest langversion

* Make it possible to track whether in query

* Don't bother trying to deal with nullables within expressions - closes icsharpcode#1011

* Changelog

* Update characterization

* Dodge null

* 9.2.3

* Bump tough-cookie from 4.0.0 to 4.1.3 in /Web/ClientApp

Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.0.0 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](salesforce/tough-cookie@v4.0.0...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Add Linq.Expressions reference to defaults

* Restore original state rather than forcing false

* Pay attention to lambda expressions - fixes icsharpcode#930

Inspired by https://github.com/JosefPihrt/Roslynator/blob/7ba2f29f5090aa13f4dd6b7936af55180b678333/src/CSharp/CSharp/Extensions/SyntaxExtensions.cs#L3114

* Don't do VB comparison within expressions - fixes icsharpcode#316

* Maintain expression type in variable declaration

* Changelog

* Update README.md

* Omit ByVal as recommended by IDE0081 - fixes icsharpcode#1024

* Bump word-wrap from 1.2.3 to 1.2.4 in /Web/ClientApp

Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](jonschlinkert/word-wrap@1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* add test for a non-VB-Chr Method

* Fix VB.Chr method recognition

* remove trailing NewLine in SpecialConversionTests.cs

* remove EOL

* remove EOL

* really fix the EOL at EOF this time I hope

* Basic implementation with current library version - fixes 1032

* Use verbatim literals rather than manually escape

* Refine logic for using verbatim strings

* Update CHANGELOG.md

* tests: add tests for clashing renamer and enum types

* fix: clashing renamer for enums

* chore: update changelog

* refactor: use INamedTypeSymbol

* tests: regenerate results

* Bump @babel/traverse from 7.16.7 to 7.23.2 in /Web/ClientApp

Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.16.7 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* BinaryConditional's first expression isn't always boolean - fixes icsharpcode#1038

* Walk existing structure bottom up to avoid stack overflow - fixes icsharpcode#1033

Only worth doing this since it's a really easy way to cause an error that's been seen by multiple real users. Not planning to protect against every possible version of this, since that would add a lot of complexity for a tiny reward

* Bump axios from 0.27.2 to 1.6.0 in /Web/ClientApp

Bumps [axios](https://github.com/axios/axios) from 0.27.2 to 1.6.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v0.27.2...v1.6.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Mention Versions

* This couldn't be resolved when running latest version of VS... don't know why

* Try to create this as a net standard project since msbuild is complaining about net 48 stuff

* Recharacterize in this form

* add a workaround

It's only required until dotnet/roslyn#71115 is fixed.

(cherry picked from commit b0a64e6)

* And the sln files

* Exit Property now returns value assigned to return variable - fixes icsharpcode#1051

* Remove square brackets when escaping labels and identifiers - fixes icsharpcode#1043, fixes icsharpcode#1044

* Add example

* Split test class in two

* It's a csharp compile error to use optional parameters before ref parameters - fixes icsharpcode#1057

* `Nothing` is the default, don't bother specifying since we can't get it right for structs - fixes icsharpcode#1056

* Avoid stack overflow in stack overflow prevention code - fixes icsharpcode#1047

* Reformat

* Apply to additional declarations - fixes icsharpcode#1053

Note: Also removed other changelog item which was broken and fixed within this release

* 9.2.4

* Remove missed issue

* Use a wrapper that calls escape identifier

* Overescape identifiers - fixes # 1043

Don't worry about exactly which context, just escape in any case

* This can obviously have dots in, so is a name, and it turns out we don't need to parse it

* Cast to dynamic when the accessed member can't be found but the surrounding object can - fixes icsharpcode#786

There's probably a more specific condition which should trigger this if we look in Roslyn code

* Conversion of parenthesized ref arguments no longer assigns back - fixes icsharpcode#1046

* Add Func + Web startup option

* Update to dot net 8 and react 18 render method

* Set the path in the url needed to debug locally

* Add new test and move existing tests together

The existing test may need an update to work for icsharpcode#749 and icsharpcode#1062

* Remove part of fix for icsharpcode#749 - fixes icsharpcode#1062

* Some more tests

* CHANGELOG

* Recharacterize

* Convert constant characters directly to constant strings

* Select case for a mixture of strings and characters converts correctly - fixes icsharpcode#1061

* Bump follow-redirects from 1.15.3 to 1.15.4 in /Web/ClientApp

Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.3 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](follow-redirects/follow-redirects@v1.15.3...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient from 4.8.5 to 4.8.6 in /Web

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.5 to 4.8.6.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient in /CommandLine/CodeConv.NetFramework

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.5 to 4.8.6.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient from 4.8.5 to 4.8.6 in /Func

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.5 to 4.8.6.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient from 4.8.5 to 4.8.6 in /Vsix

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.5 to 4.8.6.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump System.Data.SqlClient from 4.8.5 to 4.8.6 in /CommandLine/CodeConv

Bumps [System.Data.SqlClient](https://github.com/dotnet/corefx) from 4.8.5 to 4.8.6.
- [Release notes](https://github.com/dotnet/corefx/releases)
- [Commits](https://github.com/dotnet/corefx/commits)

---
updated-dependencies:
- dependency-name: System.Data.SqlClient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Only cast for boxing when it's not implicit - fixes icsharpcode#1071

But since this removes some casts, do still ensure that predefined cast expressions always cast since otherwise casting to T via object gets broken

* 9.2.5

* Set TFM to net6.0;net8.0 for "warning NETSDK1138: The target framework 'netcoreapp3.1' is out of support and will not receive security updates in the future."

* Upgrade Azure Function to .NET 8

* Update NuGet packages for Tests project (based on File/New xUnit project)

* Update CHANGELOG.md

* Test for case similar to icsharpcode#782

* Don't try to ref foreach, Me or Using identifiers - fixes icsharpcode#1052

* Catch when it's a different type or the method is missing due to version issues

* Cater net 45 and non-compiling solutions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: GrahamTheCoder <GrahamTheCoder@gmail.com>
Co-authored-by: Christoph Wille <christoph.wille@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: GrahamTheCoder <graham.helliwell@savanta.com>
Co-authored-by: Jeremy Philippe <jeremy.philippe@gmail.com>
Co-authored-by: Timur Kelman <tymur.gubayev@gmail.com>
Co-authored-by: Timur Kelman <Timur.Kelman@fecher.eu>
Co-authored-by: Dominik Baran <dominik.baran@gustline.com>
Co-authored-by: Dominik Baran <dominik.baran7@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants