GithubHelp home page GithubHelp logo

akshaybharambe14 / go-generics-tests-bug Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 4 KB

Details of a bug in compiling tests files with generic code.

License: MIT License

Go 100.00%
go golang generics bug

go-generics-tests-bug's Introduction

go-generics-tests-bug

Steps to reproduce

Assuming you have go1.18beta1 installed, you can reproduce the bug by running:

git clone https://github.com/akshaybharambe14/go-generics-tests-bug
cd go-generics-tests-bug
go1.18beta1 test

This produces following output:

# github.com/akshaybharambe14/go-generics-tests-bug [github.com/akshaybharambe14/go-generics-tests-bug.test]
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x18 pc=0x845ae5]

goroutine 1 [running]:
cmd/compile/internal/noder.transformCompLit(0xc000384400)
        c:/go/src/cmd/compile/internal/noder/transform.go:1019 +0x8a5
cmd/compile/internal/noder.(*irgen).compLit(0xc000142240, {0xad5150, 0xc000541680}, 0xc0003ebcc0)
        c:/go/src/cmd/compile/internal/noder/expr.go:372 +0x276
cmd/compile/internal/noder.(*irgen).expr0(0xc000142240, {0xad5150, 0xc000541680}, {0xad60a8?, 0xc0003ebcc0?})
        c:/go/src/cmd/compile/internal/noder/expr.go:107 +0x585
cmd/compile/internal/noder.(*irgen).expr(0xc000142240, {0xad60a8?, 0xc0003ebcc0?})
        c:/go/src/cmd/compile/internal/noder/expr.go:81 +0x5e8
cmd/compile/internal/noder.(*irgen).compLit(0xc000142240, {0xad51f0, 0xc00058bad0}, 0xc0003ebc70)
        c:/go/src/cmd/compile/internal/noder/expr.go:353 +0x57b
cmd/compile/internal/noder.(*irgen).expr0(0xc000142240, {0xad51f0, 0xc00058bad0}, {0xad60a8?, 0xc0003ebc70?})
        c:/go/src/cmd/compile/internal/noder/expr.go:107 +0x585
cmd/compile/internal/noder.(*irgen).expr(0xc000142240, {0xad60a8?, 0xc0003ebc70?})
        c:/go/src/cmd/compile/internal/noder/expr.go:81 +0x5e8
cmd/compile/internal/noder.(*irgen).compLit(0xc000142240, {0xad51c8, 0xc000415790}, 0xc0003ebc20)
        c:/go/src/cmd/compile/internal/noder/expr.go:360 +0x747
cmd/compile/internal/noder.(*irgen).expr0(0xc000142240, {0xad51c8, 0xc000415790}, {0xad60a8?, 0xc0003ebc20?})
        c:/go/src/cmd/compile/internal/noder/expr.go:107 +0x585
cmd/compile/internal/noder.(*irgen).expr(0xc000142240, {0xad60a8?, 0xc0003ebc20?})
        c:/go/src/cmd/compile/internal/noder/expr.go:81 +0x5e8
cmd/compile/internal/noder.(*irgen).exprs(0xc00007f360?, {0xc00007f350, 0x1, 0x200c00004cc20?})
        c:/go/src/cmd/compile/internal/noder/expr.go:329 +0x8e
cmd/compile/internal/noder.(*irgen).exprList(0x8?, {0xad60a8?, 0xc0003ebc20?})
        c:/go/src/cmd/compile/internal/noder/expr.go:312 +0x85
cmd/compile/internal/noder.(*irgen).stmt(0xc000142240, {0xad5f28?, 0xc000057ac0?})
        c:/go/src/cmd/compile/internal/noder/stmt.go:79 +0x418
cmd/compile/internal/noder.(*irgen).stmts(0xc00036d570?, {0xc000057b00?, 0x4, 0xc00007f648?})
        c:/go/src/cmd/compile/internal/noder/stmt.go:19 +0xaf
cmd/compile/internal/noder.(*irgen).funcBody(0xc000142240, 0xc00036e6e0, 0x78f320?, 0xc0000577c0, 0xc000057840)
        c:/go/src/cmd/compile/internal/noder/func.go:45 +0x25f
cmd/compile/internal/noder.(*irgen).funcDecl.func1()
        c:/go/src/cmd/compile/internal/noder/decl.go:145 +0xf5
cmd/compile/internal/noder.(*irgen).generate(0xc000142240, {0xc0003d4100, 0x4, 0xc000432000?})
        c:/go/src/cmd/compile/internal/noder/irgen.go:280 +0x227
cmd/compile/internal/noder.check2({0xc0003d4100, 0x4, 0x4})
        c:/go/src/cmd/compile/internal/noder/irgen.go:92 +0x16d
cmd/compile/internal/noder.LoadPackage({0xc00011e120, 0x4, 0x0?})
        c:/go/src/cmd/compile/internal/noder/noder.go:90 +0x335
cmd/compile/internal/gc.Main(0x98f488)
        c:/go/src/cmd/compile/internal/gc/main.go:191 +0xb13
main.main()
        c:/go/src/cmd/compile/main.go:55 +0xdd
FAIL    github.com/akshaybharambe14/go-generics-tests-bug [build failed]

Tests run perfectly fine if executed for individual unit:

$ go1.18beta1 test -v find.go find_test.go
=== RUN   TestFind
=== RUN   TestFind/element_exists_in_slice
=== RUN   TestFind/element_does_not_existsin_slice
=== RUN   TestFind/empty_slice
--- PASS: TestFind (0.00s)
    --- PASS: TestFind/element_exists_in_slice (0.00s)
    --- PASS: TestFind/element_does_not_existsin_slice (0.00s)
    --- PASS: TestFind/empty_slice (0.00s)
PASS
ok      command-line-arguments  0.245s
$ go1.18beta1 test -v delete.go delete_test.go
=== RUN   TestDelete
=== RUN   TestDelete/delete_from_empty_slice
=== RUN   TestDelete/delete_out_of_bound_index
=== RUN   TestDelete/delete_negative_index
=== RUN   TestDelete/delete_valid_index
=== RUN   TestDelete/delete_last_index
=== RUN   TestDelete/delete_first_index
--- PASS: TestDelete (0.00s)
    --- PASS: TestDelete/delete_from_empty_slice (0.00s)
    --- PASS: TestDelete/delete_out_of_bound_index (0.00s)
    --- PASS: TestDelete/delete_negative_index (0.00s)
    --- PASS: TestDelete/delete_valid_index (0.00s)
    --- PASS: TestDelete/delete_last_index (0.00s)
    --- PASS: TestDelete/delete_first_index (0.00s)
PASS
ok      command-line-arguments  0.182s

This looks like an issue in compiling test files.

I observed this issue while working on github.com/akshaybharambe14/gouf. It is confirmed that this issue is not OS specific as tests failed to run with github actions. You can see that output here

go-generics-tests-bug's People

Contributors

akshaybharambe14 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.