applynullabledecorators's People
Forkers
terrajobstapplynullabledecorators's Issues
Tools should annotate derived types as part of the type annotation, also should try and find overrides to determine virtual/abstract return types.
Support "is null" expression under an if expression condition during argument validation
Currently, if a method throws when doing:
if (x is null) throw new ArgumentNullException(nameof(x));
the tool doesn't catch that, that argument is not nullable.
Add test coverage
Add test coverage with various different scenarios that the tool should support:
- Method chaining (calling overrides or internal methods that do argument validation)
- Internal/Private methods using Debug.Assert
- "is null" pattern.
operators
->operator !=(string a, string b)
- Internal/Private methods, deeper analysis, if it dereference an argument without null validation, should assume it can't be null as well.
....
etc.
Should annotate properties.
Support constructor chaining
Visit constructor invocations using :this
syntax.
Just like we do now for overrides or invocations to other public APIs, for constructors we also have argument validation, so we could hit a scenario like:
public foo(string x) : this(x, 0) { }
public foo(string x, int y)
{
if (x == null) throw new ArgumentNullException(nameof(x));
}
So the tool should understand that x can't be null on either foo constructors.
Arrays or collections that can have null in the items
Right now the tool won't decorate an array or collection with ? for the underlying items, as it doesn't have a way yet to know if an item can be null for an array parameter.
It should do deeper analysis to figure out if an item within the array/collection can be null -> i.e string?[]
IEnumerable<object?>
operators are not annotated for some reason
When running the tool on String
it didn't annotate the !=
and ==
operators at all when it should've marked its arguments as nullable.
Support ?? during assignment.
We have some places where we do:
_x = x ?? throw new ArgumentNullException(nameof(x));
Therefore x can't be null, the tool, now, would mark it as nullable.
Generic types support
Haven't dug into this area yet, but, the tool doesn't do any generic parameters yet.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.