This repository was archived by the owner on Nov 1, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 506
Add .gitattributes and .gitignore files #3
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
These files are needed so we have proper line endings (for example, for bash scripts) and so git would ignore some temporary local folders (for example, "bin") These files have been copied from the corefx repo (https://github.com/dotnet/corefx) based on the commit label dbb131dcafe570fd93824820797c88eb35609fc7.
Member
|
LGTM |
janvorli
added a commit
that referenced
this pull request
Sep 17, 2015
Add .gitattributes and .gitignore files
This was referenced Jan 27, 2016
ghost
pushed a commit
that referenced
this pull request
Aug 20, 2016
Reflection Refactoring Step #3.
dotnet-bot
pushed a commit
that referenced
this pull request
May 22, 2017
) This api was approved here: https://github.com/dotnet/corefx/issues/5884 and is a necessary step to fixing the System.Dynamic.Runtime.Tests failure: https://github.com/dotnet/corefx/issues/19895 which is caused by Microsoft.CSharp trying to do the impossible and emulate this api without GetMetadataToken() support. This approach opts for the most straightforward and efficient implementation without any special-casing for weird situations (this is also what Microsoft.CSharp implements today as well as what someone else trying to trampoline members across generic instantaitions is like to do.) This results in the following behavior for these corner cases. With the possible exception of #3, I think they are tolerable enough to accept and codify: 1. "other" implemented by an entirely different Reflection provider than "this". Behavior: returns false without invoking any methods on the "other" Member. To change it to throw an ArgumentException would mean extra cast checks against the 6 possible Runtime types (or having said RuntimeTypes implement a sentinel interface.) Given that HasSameMetadataDefinitionAs() is a "looser cousin of Equals()" and "Equals()" doesn't throw for objects from a different universe, this seems reasonable. 2. Arrays, ByRefs, Pointers and Types from GetTypeFromCLSID() Behavior: Arrays, ByRefs, Pointers all return token 0x0600000 and so they'll return "true" wrt to each other (provided both types are implemented by the same provider.) CLSID types all return the typedef of __ComObject so they'll return "true" wrt to each other. The constructor exposed by CLSID types all return the typedef of some constructor on __ComObject so they'll return "true" wrt to each other. I do not think these are interesting cases that merit special handling. These types will never appear in an enumeration of the members of a type. (The fact that Reflection surfaces them in objects that are assignable to MemberInfo is a structural flaw in Reflection's object model.) 3. Synthesized constructors and methods on array types. Behavior: These methods all return 0x06000000 as a token so the constructors will all compare true wrt each other, and likewise with the methods. This is a bit crummy though it's not clear what the "right" policy should look like. I could be persuaded to throw NotSupported for these, to leave the possibility open for a better story later. On the other hand, I wouldn't demand it either. Signed-off-by: dotnet-bot <[email protected]>
ghost
pushed a commit
that referenced
this pull request
May 22, 2017
) This api was approved here: https://github.com/dotnet/corefx/issues/5884 and is a necessary step to fixing the System.Dynamic.Runtime.Tests failure: https://github.com/dotnet/corefx/issues/19895 which is caused by Microsoft.CSharp trying to do the impossible and emulate this api without GetMetadataToken() support. This approach opts for the most straightforward and efficient implementation without any special-casing for weird situations (this is also what Microsoft.CSharp implements today as well as what someone else trying to trampoline members across generic instantaitions is like to do.) This results in the following behavior for these corner cases. With the possible exception of #3, I think they are tolerable enough to accept and codify: 1. "other" implemented by an entirely different Reflection provider than "this". Behavior: returns false without invoking any methods on the "other" Member. To change it to throw an ArgumentException would mean extra cast checks against the 6 possible Runtime types (or having said RuntimeTypes implement a sentinel interface.) Given that HasSameMetadataDefinitionAs() is a "looser cousin of Equals()" and "Equals()" doesn't throw for objects from a different universe, this seems reasonable. 2. Arrays, ByRefs, Pointers and Types from GetTypeFromCLSID() Behavior: Arrays, ByRefs, Pointers all return token 0x0600000 and so they'll return "true" wrt to each other (provided both types are implemented by the same provider.) CLSID types all return the typedef of __ComObject so they'll return "true" wrt to each other. The constructor exposed by CLSID types all return the typedef of some constructor on __ComObject so they'll return "true" wrt to each other. I do not think these are interesting cases that merit special handling. These types will never appear in an enumeration of the members of a type. (The fact that Reflection surfaces them in objects that are assignable to MemberInfo is a structural flaw in Reflection's object model.) 3. Synthesized constructors and methods on array types. Behavior: These methods all return 0x06000000 as a token so the constructors will all compare true wrt each other, and likewise with the methods. This is a bit crummy though it's not clear what the "right" policy should look like. I could be persuaded to throw NotSupported for these, to leave the possibility open for a better story later. On the other hand, I wouldn't demand it either. Signed-off-by: dotnet-bot <[email protected]>
ghost
pushed a commit
that referenced
this pull request
May 22, 2017
This api was approved here: https://github.com/dotnet/corefx/issues/5884 and is a necessary step to fixing the System.Dynamic.Runtime.Tests failure: https://github.com/dotnet/corefx/issues/19895 which is caused by Microsoft.CSharp trying to do the impossible and emulate this api without GetMetadataToken() support. This emulates the behavior of the CoreCLR version (which simply compares MetadataTokens and Modules.) The CoreCLR version of this is currently a PR dotnet/coreclr#11774 -- Copied from CoreCLR commit text--- This results in the following behavior for these corner cases. With the possible exception of #3, I think they are tolerable enough to accept and codify: 1. "other" implemented by an entirely different Reflection provider than "this". Behavior: returns false without invoking any methods on the "other" Member. To change it to throw an ArgumentException would mean extra cast checks against the 6 possible Runtime types (or having said RuntimeTypes implement a sentinel interface.) Given that HasSameMetadataDefinitionAs() is a "looser cousin of Equals()" and "Equals()" doesn't throw for objects from a different universe, this seems reasonable. 2. Arrays, ByRefs, Pointers and Types from GetTypeFromCLSID() Behavior: Arrays, ByRefs, Pointers all return token 0x0600000 and so they'll return "true" wrt to each other (provided both types are implemented by the same provider.) CLSID types all return the typedef of __ComObject so they'll return "true" wrt to each other. The constructor exposed by CLSID types all return the typedef of some constructor on __ComObject so they'll return "true" wrt to each other. I do not think these are interesting cases that merit special handling. These types will never appear in an enumeration of the members of a type. (The fact that Reflection surfaces them in objects that are assignable to MemberInfo is a structural flaw in Reflection's object model.) 3. Synthesized constructors and methods on array types. Behavior: These methods all return 0x06000000 as a token so the constructors will all compare true wrt each other, and likewise with the methods. This is a bit crummy though it's not clear what the "right" policy should look like. I could be persuaded to throw NotSupported for these, to leave the possibility open for a better story later. On the other hand, I wouldn't demand it either.
Open
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
These files are needed so we have proper line endings (for example, for
bash scripts) and so git would ignore some temporary local folders (for
example, "bin")
These files have been copied from the corefx repo
(https://github.com/dotnet/corefx) based on the commit label
dbb131dcafe570fd93824820797c88eb35609fc7.