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

Multi-value return #508

Closed
arakov opened this issue Jul 29, 2020 · 2 comments
Closed

Multi-value return #508

arakov opened this issue Jul 29, 2020 · 2 comments
Assignees
Labels
Design Idea New language feature
Milestone

Comments

@arakov
Copy link
Member

arakov commented Jul 29, 2020

The language should support multi-value return, Tuple<T1,...> template should be used. Something like this

singleton Helper
{
       int, string getPair()
             = (1, "abc");   
}
@arakov arakov added the Design Idea New language feature label Jul 29, 2020
@arakov arakov added this to the ELENA 6.0 milestone Jul 29, 2020
@arakov arakov self-assigned this Mar 31, 2023
arakov pushed a commit that referenced this issue Apr 3, 2023
@arakov
Copy link
Member Author

arakov commented Apr 4, 2023

The following code demonstrates the multi assign:

public program()
{
    var t := (1,"abc");
       
    console.printLine("Item1=",t.Item1,", Item2=", t.Item2);
    
    var a;
    var b;
    
    a,b := t;
    console.printLine("a=",a,", b=", t.Item2);
}

arakov pushed a commit that referenced this issue Apr 12, 2023
arakov pushed a commit that referenced this issue Apr 12, 2023
arakov pushed a commit that referenced this issue Apr 13, 2023
@arakov arakov mentioned this issue May 30, 2023
arakov added a commit that referenced this issue May 30, 2023
* house keeping

* working on #508

* [*]working on #805

* debugger : fixing step over operation

* changing syntax

* [*]#805 : implementing tuple literal

* housekeeping

* [*]implementing .\ operator

* [*]ide : selecting with a mouse

* #508 : working on multi-value return

* [*] #508 : fixing tuple unboxing

* [*]#508 : assigning multi-value

* [*]ide : implementing new file command

* [*]working on preloaded symbols

* [*]implementing preloaded symbols

* [*]ide : context browser

* implementing dynamic code generation

* working on the dynamic code generation

* working on script generation

* fixing dynamic loading

* [*]working on script-based code generation

* working on uint support

* [api]fixing LongNumber routines

* working on migrating api to ELENA 6.0

* [*] working on math routines

* working on api migrating to ELENA 6.0

* [*]ide : fixing go to source routine

* [*]ide - (re)implementing support for breakpoints

* [*]api : fixing operations with callstack

* working on message name constants

* implementing try-catch-finally

* try-finally

* working on doc

* working on elena 6.0

* [*]allowing to call a private constructor from the class itself

* [!]redesigning the program entry generation to enable static field assigning

* [*](re)implementing preloaded symbols

* [*]implementing static field assigning in compile-time

* [*]fixing variadic argument list routines

* [*]working on passing the variadic argument further

* [*]fixing passing a variadic argument further

* [*]fixing bug with embeddable ret value and variadic method

* [*](re)implementing built-in variable __received

* [*]ide : (re)implementing project settings dialog
[*]elenavm : fixing bootstarping code

* [*]elenavm : fixing an issue with resolving message dispatching in run-time

* [*]fixing an issue with weak message signature

* [*]working on rosetta code samples

* [*]fixing a closure returning the symbol

* fixing ide debugger

* [*]ecv : show if the method is abstract
[*]elc : fix implementation of abstract method with the stack allocated returning value

* [*]new opcodes for aarch64 & ppc64le

* new opcodes : fillir / xfillr

* fixing xfillr opcode

* [*]api : fixing random routines

* [*]new rosetta sample : amb

* [*]adding new samples

* [+]supporting frounddp opcode for ppc64le / aarch64

* [+]adding new samples

* [+]new opcode : fsqrt - ppc64le, arm64

* [+]adding new rosetta code samples

* [+]new opcode : udivdp for aarch64 / ppc64le

* [+]new samples

* [+]new opcodes : fabsdp

* [+]new sample : replace

* [+]ppc64le,aarch64:new opcodes - fillir, xfillr

* [!]ppc64le,aarch64: putting dummy opcodes for math

* house keeping

* [*]linux api : fixing the compilation error

* [+]ppc64le : fabsdp opcode

* tracing

* fixing opcode

* tracing

* [*]ppc64le : fixing fillir opcode

* tracing

* fixing opcodes

* tracing

* tracing

* tracing

* tracing

* tracing

* tracing

* tracing

* tracing

* tracing

* tracing

* tracing

* tracing

* fixing opcodes

* tracing

* tracing

* refactoring opcodes to deal with PPC64 opcodes limitations

* adding missing command

* tracing opcodes

* fixing opcode

---------

Co-authored-by: Aleksey Rakov <[email protected]>
@arakov
Copy link
Member Author

arakov commented Jun 2, 2023

The issue is done in 6.0.3 version

@arakov arakov closed this as completed Jun 2, 2023
arakov added a commit that referenced this issue Nov 29, 2023
[FIXED]#86 - primitive operations : int + long
@arakov arakov mentioned this issue Feb 10, 2024
1 task
arakov added a commit that referenced this issue Feb 10, 2024
* starting a new iteration - 19

* [FIXED]do not box the target for direct extension call

* [FIXED]resolving an extension without parameters

* working on #604

* house keeping : rolling back changes for tracing the error

* [FIXED]#604 - using byref handler for extensions

* [ADDED]optimization : looking ahead for operand expressions if byref handler can be used

* [IDE][FIXED]debugger : step inside a nested class / closure

* [FIXED]#624 - GC routine

* [ADDED]inplace default / conversion constructors
[ADDED]built-in variable default

* [DELETED]get rid of embeddable method attribute

* [ADDED]opcodes : xsave n, xsave offs, n

* simplify constant assigning

* [ADDED]inplace call of the conversion constructor

* [FIXED]ecv formatting: insert spaces into the first space; fix display with byte code

* [ADDED]pointer h := UnsafePointer.Empty; - embeddable constructor call

* [ADDED]#629 : Post increment/decrement operators

* refactoring script grammar

* refactoring script support

* refactoring scripts

* refactoring lscript

* [FIXED]script engine : bookmark resolving

* working on the script routines

* tracing

* [FIXED]in-place constructors

* working on default support

* working on in-place constructor call

* refactoring compiler code

* [FIXED]built-in variable default

* [FIXED]#630 - Nil reference cannot be assigned to struct

* fixing code

* house keeping

* working on script samples

* working on script samples

* working on script samples

* [FIXED]bytecode optimization

* [FIXED]#132 anagram sample

* [FIXED]#132 - anagram sample

* working on gui samples

* [ADDED]gui controls
[ADDED]elenasm for Linux

* [FIXED]#623 - Overriding property set accessor
[FIXED]#601 - bytecode optimization

* [ADDED]#629 - Read-only fields
[FIXED]#613 - bytecode optimization

* [FIXED]"this self" for an extension
[ADDED]system : Int8Number, UShortNumber

* [FIXED]#508 - working on multi-value assigning
[FIXED]#86 - primitive operations : int + long

* [ADDED]meta command #load, #clear
[ADDED]#563:Extended statement templates

* fixing warnings for the standard library

* [FIXED]syntax for multi value method

* refactoring rosetta code samples

* refactoring code to support nullable types

* #562 - implementing nullable return type
@arakov arakov mentioned this issue Feb 10, 2024
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Design Idea New language feature
Projects
None yet
Development

No branches or pull requests

1 participant