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

Test plan for UnsignedRightShift feature #60433

Closed
56 tasks done
AlekseyTs opened this issue Mar 28, 2022 · 3 comments
Closed
56 tasks done

Test plan for UnsignedRightShift feature #60433

AlekseyTs opened this issue Mar 28, 2022 · 3 comments

Comments

@AlekseyTs
Copy link
Contributor

AlekseyTs commented Mar 28, 2022

Feature branch - https://github.com/dotnet/roslyn/tree/features/UnsignedRightShift
Specification - https://github.com/dotnet/csharplang/blob/main/proposals/csharp-11.0/unsigned-right-shift-operator.md
Proposal: dotnet/csharplang#4682

Compiler

  • LangVer
  • Update test plan
  • Verify behavior of VB
  • Verify behavior of C++/CLI
  • Inform F# of changes

Public APIs

  • IOperation
    • shift: TestBinaryOperators_UnsignedRightShift
    • compound assignment?
    • CFG
  • Symbol display on >>> operator
  • SyntaxNormalizer
  • GetSymbolInfo
    • Intrinsic operators
    • User-defined operators
  • GetSpeculativeSymbolInfo
  • API review

Parsing

  • Expressions
  • Disambiguation with nested generics
    • Presense of tuple types at various levels
  • Operator declaration
    • Regular declarations
    • Explicit implementations

Semantics

  • Operator is called
    • Intrinsic operators
    • User-defined operators
  • dynamic LHS or RHS
  • Lifted operators
    • Intrinsic
    • User-defined
  • Constants and constant folding
  • Disallowed in expression tree (BuiltIn_Lifted_ExpressionTree_*)
  • Results on hover in EE/debugger

Productivity

  • F1 on >>> and >>>= - tests are in place, need to add actual doc pages
  • Declaring >>> operator
  • Using operator in expressions
  • QuickInfo should show used operator
    • User-defined operators
    • Intrinsic operators
  • >>> token classification
  • Syntax normalizer for declarations
  • Go to definition from operator usage and explicit interface implementation
  • Find all references for operators
  • Go To Implementation
  • Operator completion for explicit implementation
  • Operator completion when available (in expressions on types with the operator)
    • Intrinsic operators
    • User-defined operators
  • Implement interface fixer
  • Formatter tests
    • Signature formatting
    • Indentation inside operator
  • Navbar
  • Object Browser
  • Metadata as source
  • Call hierarchy window
  • Code lens
@jasonmalinowski
Copy link
Member

Code Lens and Call Hierarchy behave like any other operator; not worth adding explicit tests in those cases.

@jasonmalinowski
Copy link
Member

And the discussed fix for how we handle the parse ambiguity: #60789

@jcouv jcouv added this to the 17.4 milestone Sep 26, 2022
@jaredpar jaredpar assigned 333fred and unassigned 333fred, AlekseyTs and jcouv Oct 7, 2022
@jasonmalinowski
Copy link
Member

@333fred IDE looks good, I don't see any remaining work here.

@333fred 333fred closed this as completed Nov 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants