by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • May 26 23:32
    leonardoalt edited #8926
  • May 26 23:32
    leonardoalt edited #8926
  • May 26 23:32
    leonardoalt edited #8926
  • May 26 23:32
    leonardoalt commented #8926
  • May 26 23:24
    leonardoalt synchronize #8926
  • May 26 23:24

    leonardoalt on smt_bitwise_and

    [SMTChecker] Support to bitwise (compare)

  • May 26 22:58
    cameel closed #8485
  • May 26 22:58
    cameel commented #8485
  • May 26 22:55
    cameel edited #9032
  • May 26 22:54
    cameel unassigned #8078
  • May 26 22:40
    leonardoalt synchronize #8926
  • May 26 22:40

    leonardoalt on smt_bitwise_and

    [SMTChecker] Support to bitwise (compare)

  • May 26 22:18
    cameel assigned #9032
  • May 26 22:18
    cameel opened #9032
  • May 26 22:07

    cameel on sol-yul-fix-wrong-function-type-declaration-assumption

    Don't assume that an expression… (compare)

  • May 26 21:12
    sambacha commented #1290
  • May 26 20:19

    cameel on sol-yul-fix-wrong-function-type-declaration-assumption

    Don't assume that an expression… (compare)

  • May 26 20:05
    leonardoalt commented #9031
  • May 26 19:12
    aarlt edited #9014
  • May 26 19:10
    aarlt ready_for_review #9014
Leonardo
@leonardoalt
sigh... ethereum/solidity#8926 fails because it needs CVC4 1.7 apparently, and Ubuntu has 1.6
chriseth
@chriseth
@a3d4 because that is the way it is recommended by the standard
@leonardoalt what about z3?
@cameel if you make g internal, the contract has no public interface and thus no code is generated - that would be my gues.
for the second part, my guess would be that it does overload (not override) lookup and that fails because there are no arguments provided
one could argue that there is no function overloading going on because the functions override each other, but I would rather not touch that logic now...
Leonardo
@leonardoalt
@chriseth z3 works fine
chriseth
@chriseth
chriseth
@chriseth
oh wow! WE are at 28 PRs! let's try to get below 25 today!
Kamil Śliwak
@cameel

one could argue that there is no function overloading going on because the functions override each other, but I would rather not touch that logic now...

my guess would be that it does overload (not override) lookup and that fails because there are no arguments provided

This seems to be the case. But not due to the lack of arguments. This fails as well:

contract A {
  function f(uint, uint) virtual internal {}
  function f(uint) virtual internal {}
}
contract B is A {
  function h() internal { f; }
}

So basically, you can't get a pointer to a function that has multiple overloads? And an overridden function looks a bit like an overload but isn't one and should technically work but currently doesn't?
Do we want to fix it at some point in the future? I could report an issue and leave it for now.

chriseth
@chriseth
no arguments provided: When you use f instead of f(1,2) you cannot do overload resolution because you do not know what to look for
yes, please create an issue
Mathias L. Baumann
@Marenz
@chriseth could we have a short call so you can point me in the right directions regarding ethereum/solidity#8265 ?
chriseth
@chriseth
Can someone please check why the job here does not continue to the deploy stage? https://travis-ci.org/github/ethereum/solidity/jobs/691299171
@Marenz what did you find out so far?
I'm kind of in the middle of something
Mathias L. Baumann
@Marenz
It's trying to do a copy with a new location on an ArraySlice
ArraySliceType::copyForLocation
but the member doesn't even exist
    function f(uint[2] calldata x) external pure {
        x[1:2]. a;
    }
.a doesn't exist here
chriseth
@chriseth
copy is not supported by array slice
why does it even call copyForLocation?
Mathias L. Baumann
@Marenz
It's the first thing the boundFunctions() function does
TypePointer type = TypeProvider::withLocationIfReference(DataLocation::Storage, &_type);
Kamil Śliwak
@cameel

@chriseth

if you make g internal, the contract has no public interface and thus no code is generated - that would be my gues.

That's not it. If I change the expression to a more complex one it no longer has a declaration, no matter whether the function is public or internal:

contract C {
    function p(function() internal foo) internal returns(function() internal) { return foo; }
    function f() internal {}
    function g() public { (p(f))(); }
}

Making a different method public also makes the declaration go away:

contract C {
    function f() internal {}
    function g() internal { (f)(); }
    function h() public {}
}

As far as I can tell it happens only if specifically the function containing the expression is public and if the expression consists of function name in parentheses.

It looks to me a as if the (f)() syntax was equivalent to f() in a schrizophrenic way (i.e. some part of code thinks it's the same and sets up its things this way while another one thinks it's an expression).

Looks like bug to me. It does not really break anything in my code (I can just remove the assertion) but the inconsistent behavior might mean that something's wrong (but not detected) in some other part of the code.
chriseth
@chriseth
@Marenz ah ok - this is to make different locations comparable. I guess this has to be fixed properly
Mathias L. Baumann
@Marenz
yeah, the comment says it's to normalize it
so that's the problem then? Alright
chriseth
@chriseth
It might be better to change the data location of ufd->typeName()->annotation().type to the one of _type if it has one
Mathias L. Baumann
@Marenz
We could add a compare function that ignores the location
Ok, I'll try that
chriseth
@chriseth
@axic I'm failing to get read callbacks working in solc-js. Could you maybe take a look?
Leonardo
@leonardoalt
@chriseth you sure you don't want to replace namable -> nameable in ethereum/solidity#9024
Mathias L. Baumann
@Marenz
@chriseth here is my fix: ethereum/solidity#9027
chriseth
@chriseth
@leonardoalt sorry, overlooked that comment
chriseth
@chriseth
I would like to discuss ethereum/solidity#8807 tomorrow
Franziska Heintel
@franzihei
I would like to present the concept of OKRs tomorrow :P
Alex Beregszaszi
@axic
@chriseth tomorrow i could
chriseth
@chriseth
nice!
chriseth
@chriseth
Would be nice to get another review for ethereum/solidity#8927
Alex Beregszaszi
@axic
Anyone familiar with this book http://craftinginterpreters.com/ ?
Some guy wrote a REPL interpreter (well, over 20 of them exists) for the language, Lox, introduced in the book and compiled that interpreter to wasm (using the wasi abi). Fizzy can run it now:
$ fizzy-wasi lox-repl.wasm 
> fun sayHello(name) { print "Hello " + name + "!"; }
> sayHello("Fizzy");
Hello Fizzy!
> ^C
When Lox in Solidity? So that we could run the wasm compiled contract in fizzy :)
chriseth
@chriseth
how do you do terminal-io in fizzy?
Alex Beregszaszi
@axic
wasi.dev is the “industry standard” api, which is basically posix for wasm
Alexander Arlt
@aarlt

@chriseth will someone refactor the testing infra to support multiple evmc vms (evmone and hera)? If so, I can finish hera to support evmc7.

@axic @chriseth sounds interesting, I would like to work on this ethereum/solidity#8016

Kamil Śliwak
@cameel
@chriseth Actually you were right about the assertion passing only due to code not being generated. I misunderstood you slightly and the fact that I didn't fully understand whereFunctionType.declaration() comes from threw me off. The inconsistent behavior was really bugging me so I investigated this and looks like fortunately it was just my wrong assumption, not a bug in the parser. Here's a short PR that removes it: #9032.