GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Add ITuple checks to PSGetIndexBinder by SeeminglyScience · Pull Request #7633 · PowerShell/PowerShell

Conversation

@SeeminglyScience

@SeeminglyScience Patrick Meinecke (SeeminglyScience) commented Aug 25, 2018 •
edited by daxian-dbw
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

PR Summary

Resolves #7632.

This change enables index operations on objects that implement ITuple, including slicing and negative indexing.

Add checks in PSGetIndexBinder for types that implement an interface with DefaultMemberAttribute declared, such as ITuple. Tuple and ValueTuple implement ITuple interface, and thus they are made indexable by this PR.

PR Checklist

  • PR has a meaningful title
    • Use the present tense and imperative mood when describing your changes
  • Summarized changes
  • Change is not breaking
  • Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
  • This PR is ready to merge and is not Work in Progress.
    • If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.
  • User-facing changes
    • Not Applicable
    • OR
    • User-facing Documentation needed
      • Issue filed - Issue link:
  • Testing - New and feature
    • Not Applicable or can only be tested interactively
    • OR
    • Make sure you've added a new test if existing tests do not effectively test the code changed
      • Add [feature] if the change is significant or affects feature tests

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

vexx32 and iSazonov reacted with hooray emoji
All reactions
  • 🎉 2 reactions
@SeeminglyScience
Add ITuple checks to PSGetIndexBinder
7f58b79
This change enables index operations on objects that implement ITuple.
@SeeminglyScience
Patrick Meinecke (SeeminglyScience) requested review from Bruce Payette (BrucePay) and Dongbo Wang (daxian-dbw) as code owners August 25, 2018 12:24
lzybkr
Jason Shirk (lzybkr) reviewed Aug 26, 2018
View reviewed changes
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Outdated
return InvokeIndexer(target, indexes, errorSuggestion, defaultMember.MemberName).WriteToDebugLog(this);
}

if (typeof(ITuple).IsAssignableFrom(target.LimitType))

@lzybkr Jason Shirk (lzybkr) Aug 26, 2018

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

This doesn't feel like the right fix. ITuple specifies a DefaultMemberAttribute, but we don't find it above because GetCustomAttributes is only checking classes, not implemented interfaces.

The correct fix is to search interfaces for DefaultMemberAttribute - there are other interfaces that specify DefaultMemberAttribute, and some of those are not currently handled correctly:

System.Collections.IDictionary
System.Collections.IList
System.Collections.Generic.IDictionary`2
System.Collections.Generic.IList`1
System.Collections.Generic.IReadOnlyDictionary`2
System.Collections.Generic.IReadOnlyList`1
System.Runtime.CompilerServices.ITuple
System.Runtime.CompilerServices.IRuntimeVariables
System.Collections.Specialized.IOrderedDictionary
System.Linq.ILookup`2
System.Data.IColumnMappingCollection
System.Data.IDataParameterCollection
System.Data.IDataRecord
System.Data.ITableMappingCollection
System.ComponentModel.IDataErrorInfo
Newtonsoft.Json.Linq.IJEnumerable`1

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

SeeminglyScience reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

@SeeminglyScience Patrick Meinecke (SeeminglyScience) Aug 26, 2018

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Jason Shirk (@lzybkr) Good call! I had checked that none of the default ITuple implementations had that attribute but didn't think to check the interface itself.

I've updated the change to look for DefaultMemberAttribute in the loop that looks for IDictionary<,>. I tested the update with a custom ILookup<,> with an explicitly implemented indexer, that didn't work previously but does now.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@iSazonov Ilya (iSazonov) Aug 27, 2018

Copy link
Copy Markdown
Collaborator

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Do now we support all these interfaces? If so, it's good to have a comment in the code and tests (or even extend the tests)
Also we need to document this.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@SeeminglyScience Patrick Meinecke (SeeminglyScience) Aug 27, 2018

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Ilya (@iSazonov) They were already supported. What wasn't supported was indexing into classes that explicitly implement the indexer of an interface and define no other indexer.

All ITuple implementations explicitly implement the ITuple indexer, so while indexing tuples was technically supported, it wasn't working.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@iSazonov Ilya (iSazonov) Aug 27, 2018

Copy link
Copy Markdown
Collaborator

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Patrick Meinecke (@SeeminglyScience) Sorry, I did not ask the question correctly. Your explanation is useful and I just believe that it will make it easier to understand the binder if it's in the code.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

SeeminglyScience reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

@SeeminglyScience Patrick Meinecke (SeeminglyScience) Aug 27, 2018

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Ilya (@iSazonov) Ah yes absolutely, I'll add that tonight.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@SeeminglyScience Patrick Meinecke (SeeminglyScience) Aug 28, 2018

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Ilya (@iSazonov) I've added a comment explaining purpose of the extra check in the loop.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Patrick Meinecke (SeeminglyScience) added 2 commits August 26, 2018 08:56
@SeeminglyScience
Check for explicitly implemented indexers
bdfea16
Remove the logic to specifically check for ITuple implementations.
Instead, search all implemented interfaces for a
DefaultMemberAttribute. This will ensure all explicitly implemented
indexers are found.
@SeeminglyScience
Fix Count/Length property search order
b927043
lzybkr
Jason Shirk (lzybkr) reviewed Aug 27, 2018
View reviewed changes
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Outdated
return true;
}

return typeof(ITuple).IsAssignableFrom(limitType);

@lzybkr Jason Shirk (lzybkr) Aug 27, 2018

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

I wonder if this whole method shouldn't just check for a Count or Length property.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@SeeminglyScience Patrick Meinecke (SeeminglyScience) Aug 27, 2018

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

I think that would be a breaking change. For example, if a Dictionary<,> could make it that far into the binder (I know it can't, but custom code might) then -1 could be a valid key.

I did a quick scan of the types visible by default in RC1, looking for types that:

  1. Are decorated with DefaultMemberAttribute
  2. Do not implement ICollection or ICollection<> (as the Count property coming from these make it likely enough to work as expected)
  3. Do not implement IDictionary<,> (as they'll be handled earlier in the binder)

There's a couple types that jump out at a glance as possibly an issue, depending on how imperative it is to preserve that behavior.

Here's the list in full, a couple obvious ones that jump out are System.Linq.ILookup<,>, ReadOnlyPSMemberInfoCollection<>, and some CIM related classes like CimMethodParameterCollection.

System.String
System.ReadOnlySpan`1[T]
System.Span`1[T]
System.Numerics.Vector`1[T]
System.Text.StringBuilder
System.Runtime.CompilerServices.ITuple
System.Management.Automation.PSEventArgsCollection
System.Management.Automation.ReadOnlyPSMemberInfoCollection`1[T]
System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[T]
System.Runtime.CompilerServices.IRuntimeVariables
Microsoft.Management.Infrastructure.CimMethodParametersCollection
Microsoft.Management.Infrastructure.Generic.CimKeyedCollection`1[T]
Microsoft.Management.Infrastructure.Generic.CimReadOnlyKeyedCollection`1[T]
System.Xml.XmlCDataSection
System.Xml.XmlCharacterData
System.Xml.XmlComment
System.Xml.XmlNodeList
System.Xml.XmlSignificantWhitespace
System.Xml.XmlText
System.Xml.XmlWhitespace
System.Xml.Serialization.XmlMembersMapping
System.Xml.Schema.XmlSchemaObjectTable
System.Collections.Specialized.StringDictionary
System.Linq.ILookup`2[TKey,TElement]
System.Linq.Lookup`2[TKey,TElement]
System.Data.SqlTypes.SqlChars
System.Data.SqlTypes.SqlBinary
System.Data.SqlTypes.SqlBytes
System.ComponentModel.MaskedTextProvider
Microsoft.CodeAnalysis.ChildSyntaxList
Microsoft.CodeAnalysis.SeparatedSyntaxList`1[TNode]
Microsoft.CodeAnalysis.SyntaxList`1[TNode]
Microsoft.CodeAnalysis.SyntaxNodeOrTokenList
Microsoft.CodeAnalysis.SyntaxTokenList
Microsoft.CodeAnalysis.SyntaxTriviaList
Microsoft.CodeAnalysis.Text.SourceText
Microsoft.CodeAnalysis.Text.TextLineCollection
System.Reflection.Metadata.GenericParameterHandleCollection
System.Reflection.Metadata.GenericParameterConstraintHandleCollection
Markdig.Helpers.StringSlice

While not incredibly likely to actually break existing code, perhaps it should be something the committee discusses?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@lzybkr Jason Shirk (lzybkr) Aug 27, 2018

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

The risk is that an indexer supports negative values as an index somehow, e.g. as the key in a dictionary.

Based on your list, StringDictionary, Lookup`2 and ILookup`2 do look like they'd support a negative value as the index.

Maybe the check should be - the indexer accepts a single int and is not a generic parameter. This avoids the problem with StringDictionary with the signature string Item(string key) {get;set;} and ILookup[int,T]] where even though the indexer takes an int, it was generic and therefore not always an int.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@SeeminglyScience Patrick Meinecke (SeeminglyScience) Aug 28, 2018

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Jason Shirk (@lzybkr) I've refactored that method. It now checks that:

  • The best overload match has one parameter and it's typed int (existing check)

  • The type also defines a Count or Length property (existing check)

  • The single int parameter is not a type argument of a constructed generic type (new check)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@iSazonov Ilya (iSazonov) assigned Dongbo Wang (daxian-dbw) Aug 27, 2018
@iSazonov Ilya (iSazonov) added the Documentation Needed in this repo Documentation is needed in this repo label Aug 27, 2018
Patrick Meinecke (SeeminglyScience) and others added 4 commits August 27, 2018 21:04
@SeeminglyScience
Generalized can index with negative check
ff21e59
Changed the method CanIndexFromEndWithNegativeIndex to determine
if negative indexing should be allowed to be more generalized.
Previously this was implemented by checking to see if the limit
type matched a specific set of hard coded types. This was updated
to allow negative indexing if the following is true.

- The best matching index method takes only one parameter and it is
  typed as an int

- The index parameter is not a generic type parameter of a constructed
  generic type

- A "Count" or "Length" property it also found
@SeeminglyScience
Added comment for additional default member check
44dcb5a
@SeeminglyScience
Merge branch 'master' into enable-tuple-index-ops
b00f3fe
@SeeminglyScience
Fix is generic parameter logic for negative index
6cd7405
iSazonov
Ilya (iSazonov) reviewed Aug 28, 2018
View reviewed changes
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

lzybkr
Jason Shirk (lzybkr) reviewed Aug 28, 2018
View reviewed changes
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

lzybkr
Jason Shirk (lzybkr) approved these changes Aug 28, 2018
View reviewed changes

@lzybkr Jason Shirk (lzybkr) left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

LGTM, but it'd be good to have Dongbo Wang (@daxian-dbw) sign off before merging.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@SeeminglyScience
Add additional comments and fix extra new line
7798716
iSazonov
Ilya (iSazonov) reviewed Aug 28, 2018
View reviewed changes
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

iSazonov
Ilya (iSazonov) reviewed Aug 28, 2018
View reviewed changes
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

@SeeminglyScience
Fix typo and change comment formatting
1660c78
@iSazonov

Ilya (iSazonov) commented Aug 29, 2018

Copy link
Copy Markdown
Collaborator

LGTM.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

daxian-dbw
Dongbo Wang (daxian-dbw) requested changes Aug 29, 2018
View reviewed changes
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs

internal static bool CanIndexFromEndWithNegativeIndex(DynamicMetaObject target)
internal static bool CanIndexFromEndWithNegativeIndex(
DynamicMetaObject target,

@daxian-dbw Dongbo Wang (daxian-dbw) Aug 29, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Turns out this parameter is not used within the method.

I think we probably should keep the existing checks for the common scenarios, since Module.ResolveMethod is relatively expensive.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

SeeminglyScience reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Outdated
// (this is to exclude indexers for types that could use a negative index as
// a valid key like System.Linq.ILookup)
// - Declares a "Count" or "Length" property
// - Does not inherit from IDictionary<> as that is handled earlier in the binder

@daxian-dbw Dongbo Wang (daxian-dbw) Aug 29, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Great comments! I think they should be moved to the method CanIndexFromEndWithNegativeIndex 😄

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

SeeminglyScience reacted with thumbs up emoji SeeminglyScience reacted with heart emoji
All reactions
  • 👍 1 reaction
  • ❤️ 1 reaction
Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/System.Management.Automation/engine/runtime/Binding/Binders.cs Outdated
// This check will catch those cases.
if (defaultMember == null)
{
defaultMember = i.GetCustomAttribute<DefaultMemberAttribute>(inherit: true);

@daxian-dbw Dongbo Wang (daxian-dbw) Aug 29, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

A minor comment: Attributes cannot be inherited from interfaces, so it should be inherit: false.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

SeeminglyScience reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Patrick Meinecke (SeeminglyScience) and others added 3 commits August 29, 2018 18:34
@SeeminglyScience
Add original type checks back to CanNegativeIndex
7a92042
@SeeminglyScience
Change method to get attributes and move comment
0a81b2f
@daxian-dbw
[Feature] Rearrange the check order in CanIndexFromEndWithNegativeIndex
8ded034
@daxian-dbw

Dongbo Wang (daxian-dbw) commented Aug 29, 2018

Copy link
Copy Markdown
Member

Patrick Meinecke (@SeeminglyScience) I just pushed a commit to re-arrange the order of the checks in CanIndexFromEndWithNegativeIndex (parameter check is simpler), and also add [Feature] tag to run all the tests. Hope you don't mind!

SeeminglyScience reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

daxian-dbw
Dongbo Wang (daxian-dbw) approved these changes Aug 29, 2018
View reviewed changes

@daxian-dbw Dongbo Wang (daxian-dbw) left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

LGTM

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@iSazonov

Ilya (iSazonov) commented Aug 30, 2018 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Collaborator

Patrick Meinecke (@SeeminglyScience) Thanks for the great enhancement!
Please update the PR description to facilitate documentation. Also you could open Issue/PR in PowerShell-Docs repo if you want.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@daxian-dbw

Dongbo Wang (daxian-dbw) commented Aug 30, 2018

Copy link
Copy Markdown
Member

I have updated the PR description. Will merge the PR.

iSazonov and powercode reacted with thumbs up emoji SeeminglyScience and powercode reacted with heart emoji
All reactions
  • 👍 2 reactions
  • ❤️ 2 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@daxian-dbw
Dongbo Wang (daxian-dbw) merged commit 5c2faaf into PowerShell:master Aug 30, 2018
@SeeminglyScience
Patrick Meinecke (SeeminglyScience) deleted the enable-tuple-index-ops branch August 30, 2018 20:27
Travis Plunk (TravisEz13) pushed a commit that referenced this pull request Aug 31, 2018
@SeeminglyScience @TravisEz13
Enable indexing operations on objects that implement ITuple (#7633)
2dfb4c5
This change enables index operations on objects that implement `ITuple` and other interfaces that have `DefaultMemberAttribute` declared, including slicing and negative indexing.
@TravisEz13 Travis Plunk (TravisEz13) added this to the v6.1.0 milestone Aug 31, 2018
@joeyaiello Joey Aiello (joeyaiello) mentioned this pull request Oct 15, 2018
Docs needed for 'Add ITuple checks to PSGetIndexBinder' MicrosoftDocs/PowerShell-Docs#3028
Closed
@joeyaiello Joey Aiello (joeyaiello) removed Documentation Needed in this repo Documentation is needed in this repo labels Oct 15, 2018
@SeeminglyScience Patrick Meinecke (SeeminglyScience) mentioned this pull request Oct 18, 2018
Release notes for 6.2 preview 1 has duplicate attribution #8070
Closed
@stknohg Takuya Shibata (stknohg) mentioned this pull request Oct 22, 2018
Remove notes about ITuple changes(#7633) from v6.2.0-preview.1 updates. #8101
Merged
5 of 11 tasks
Travis Plunk (TravisEz13) pushed a commit that referenced this pull request Nov 5, 2018
@stknohg @TravisEz13
Remove #7633 from v6.2.0-preview.1 Changlog updates. (#8101)
03ba61c
@SeeminglyScience Patrick Meinecke (SeeminglyScience) mentioned this pull request Sep 10, 2019
Named tuples from C# methods do not retain their names #10502
Closed
@SeeminglyScience Patrick Meinecke (SeeminglyScience) mentioned this pull request Oct 1, 2019
More specific method (indexer) overloads are not considered during overload resolution if they're part of an explicit interface implementation #10654
Closed
Thatgfsj (Thatgfsj) pushed a commit to Thatgfsj-contribs/PowerShell that referenced this pull request Aug 6, 2026
@SeeminglyScience @daxian-dbw
Enable indexing operations on objects that implement ITuple (PowerS…
a9296d7
…hell#7633)

This change enables index operations on objects that implement `ITuple` and other interfaces that have `DefaultMemberAttribute` declared, including slicing and negative indexing.
Thatgfsj (Thatgfsj) pushed a commit to Thatgfsj-contribs/PowerShell that referenced this pull request Aug 6, 2026
@SeeminglyScience @TravisEz13
Enable indexing operations on objects that implement ITuple (PowerS…
9588790
…hell#7633)

This change enables index operations on objects that implement `ITuple` and other interfaces that have `DefaultMemberAttribute` declared, including slicing and negative indexing.
Thatgfsj (Thatgfsj) pushed a commit to Thatgfsj-contribs/PowerShell that referenced this pull request Aug 6, 2026
@stknohg @TravisEz13
Remove PowerShell#7633 from v6.2.0-preview.1 Changlog updates. (Power…
5a75e4c
…Shell#8101)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@iSazonov Ilya (iSazonov) iSazonov left review comments
@daxian-dbw Dongbo Wang (daxian-dbw) daxian-dbw approved these changes
@BrucePay Bruce Payette (BrucePay) Awaiting requested review from BrucePay
+1 more reviewer
@lzybkr Jason Shirk (lzybkr) lzybkr approved these changes
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@daxian-dbw Dongbo Wang (daxian-dbw)

Labels

None yet

Projects

None yet

Milestone

v6.1.0

Development

Successfully merging this pull request may close these issues.

Enable index operations for ITuple implementations

Uh oh!

There was an error while loading. Please reload this page.

6 participants

@SeeminglyScience @iSazonov @daxian-dbw @lzybkr @joeyaiello @TravisEz13
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.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.