Code Monkey home page Code Monkey logo

topaz's People

Contributors

alex avatar asenchi avatar bitprophet avatar bivab avatar cfbolz avatar chrblabla avatar danshultz avatar fijal avatar fniephaus avatar gnprice avatar goshacmd avatar headius avatar jerith avatar jstepien avatar judofyr avatar kachick avatar kostya avatar krekoten avatar lucasallan avatar meatballhat avatar merryman avatar mswart avatar obolzer avatar parkr avatar pelletier avatar scooter-dangle avatar sideshowcoder avatar timfel avatar tobarja avatar winks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

topaz's Issues

Parse argument-hash syntax

This doesn't parse

puts 1, :hi => :ho
puts(1, :hi => :ho)

Should be equivalent to

puts(1, {:hi =. :ho})

Slash as a line continuation character

You can see this at fileutils.rb:1278:

      Dir.entries(path(), opts)\
          .reject {|n| n == '.' or n == '..' }\
          .map {|n| Entry_.new(prefix(), join(rel(), n.untaint)) }

__END__ not supported

There's an implementation in tim/support-__END__ branch, but one thing is missing: the DATA constant should only be set in the top-level Ruby script

A syntax error results in a segfault

This is because utils:format_traceback tries to read values from exc.frame, but it was never set because the RubyError was raised outside of the interpreter.

Block argument after nested constant doesn't work

This prevents lib/mspec/commands/mspec.rb from loading (assertion error in rupypy/parser.py, line 55, in visit_send_block)

A simple example where it breaks is this:

options.version MSpec::VERSION do end

These variants work:

options.version(MSpec::VERSION) do end
options.version VERSION do end

Splat in return

Specifically at fileutils.rb:203

    return *list if options[:noop]

raise stack depth limit

MRIs factorial benchmark doesn't run with the current limit (recursing 5000 times). It'll have to, eventually, if only for the Ruby shootout.

New Syntax Errors

Current master fails to parse the following mspec files

/home/tim/Devel/projects/pypy/rupypy/scripts/../../mspec/lib/mspec/guards/version.rb
/home/tim/Devel/projects/pypy/rupypy/scripts/../../mspec/lib/mspec/guards/platform.rb
/home/tim/Devel/projects/pypy/rupypy/scripts/../../mspec/lib/mspec/runner/formatters/junit.rb: line 55
/home/tim/Devel/projects/pypy/rupypy/scripts/../../mspec/lib/mspec/runner/formatters/spinner.rb: line 7
/home/tim/Devel/projects/pypy/rupypy/scripts/../../mspec/lib/mspec/utils/name_map.rb: line 78

Some class methods throw errors

ec.space.execute(ec, "return Symbol.all_symbols") fails with "uninitialized constant Symbol". However, ec.space.execute(ec, "return :abc.class.all_symbols") works as expected.

Constant lookup is incorrect

Constant lookup should use the static scope, not the dynamic scope

class A
  CONST = "a"
  def get
    CONST
  end
end

class B < A
  CONST = "b"
end

A.new.get == B.new.get # => should return true

Test performance

Tests are way too slow ATM. At a minimum they should be 10x faster (for running all tests), than they are now, and I'd like 20x.

for loops

They aren't supported. I believe their semantics are a straight forward conversion to a SEND_BLOCK.

Missing things for mspec

I have wrong implementations for some of them, which I can't push as they are, so this is to track the list of missing methods. It just takes a while to compile (what with mspec running for 5 minutes before throwing a NoMethodError ;)) so I thought it's a good idea to track them so someone doesn't have to find out the hard way, again :)

Methods

  • String#[], String#dup, String#ljust, String#split, String#=~
  • Object#hash
  • Array#pop, Array#shift, Array#dup, Array#concat, Array#empty?
  • Kernel#block_given?
  • Enumerable#detect, Enumerable#any?
  • File.join, File.exist?, File.join, File.executable?, File.directory?
  • Dir.delete
  • Kernel#exit, Kernel#exec, Kernel#at_exit
  • IO#puts

Classes

  • SystemCallError

Constants

  • STDERR

Keywords

  • super, next, break

Stdlib

  • pp.rb

Open Bugs
#90, #91

Parsing Errors

  • mspec/runner/formatters/junit

... + my open PRs :)

The good news is, that after hacking my way through/around all these, I get the help text :)

Problem in astcompiler, creating bytecode

This is a small test case

def broken
  each {
    saved_env = 1
    each { saved_env }
    each { saved_env }
  }
end

It works if one of the inner blocks is removed, or saved_env is defined in the top-level function

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.