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

Avoid calling GetDiagnostics on compilation during EnC analysis #19167

Merged
merged 2 commits into from
May 8, 2017

Conversation

tmat
Copy link
Member

@tmat tmat commented May 2, 2017

Customer scenario

Applying an EnC change in a project containing large method bodies might take a long time (minutes) during which the compiler calculates all semantic diagnostics and VS UI thread is blocked.

Bugs this fixes:

#10683

Workarounds, if any

None.

Risk

Medium. Although I went over the EnC analyzer code to find any code paths that might not be hardened against erroneous code it might happen I missed something. As a result an exception may occur, a non-fatal Watson reported and the debugging session terminated.

Performance impact

Improves performance.

Is this a regression from a previous update?

Roslyn regressed when compared to pre-Roslyn EnC.

Root cause analysis:

We used safer approach of not analyzing broken code when the analyzer was implemented.

How was the bug found?

Quite a few customer complains.

@tmat tmat requested review from gafter and ivanbasov May 2, 2017 02:12
@tmat tmat self-assigned this May 2, 2017
@tmat tmat added this to the 15.3 milestone May 2, 2017
@@ -4416,7 +4416,7 @@ void F()
}

// Add corresponding test to VB
[WpfFact(Skip = "TODO")]
[Fact(Skip = "TODO")]
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs change #18940 to go in first.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please change the skip string to "https://github.com/dotnet/roslyn/pull/18940"

@@ -4313,6 +4323,76 @@ public void Insert_ExternConstruct()
Diagnostic(RudeEditKind.InsertExtern, "public extern C()", FeaturesResources.constructor));
}

[Fact(Skip = "TODO")]
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #18940

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

@ivanbasov
Copy link
Contributor

:shipit:

Copy link
Member

@gafter gafter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@@ -4416,7 +4416,7 @@ void F()
}

// Add corresponding test to VB
[WpfFact(Skip = "TODO")]
[Fact(Skip = "TODO")]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please change the skip string to "https://github.com/dotnet/roslyn/pull/18940"

@@ -4313,6 +4323,76 @@ public void Insert_ExternConstruct()
Diagnostic(RudeEditKind.InsertExtern, "public extern C()", FeaturesResources.constructor));
}

[Fact(Skip = "TODO")]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

@tmat
Copy link
Member Author

tmat commented May 8, 2017

@MattGertz For ask mode approval.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants