salmanahmad / dog

The Dog Programming Language
http://www.dog-lang.org
Apache License 2.0
0 stars 0 forks source link

Nil exception after Listen returns #23

Closed sainsley closed 12 years ago

sainsley commented 12 years ago

Code:

DEFINE view_homepage FOR user DO

    LISTEN TO user FOR goals
    LISTEN TO user FOR logins

    ON goal DO
        ASK user TO create_account
    ELSE ON login DO
        PRINT "LOGIN"
        #ASK user TO login
    END
END

Crash follows after "PRINT 'LOGIN'"

NoMethodError - undefined method _id' for nil:NilClass: /Users/samanthaainsley/dog/lib/dog/runtime/server.rb:347:inblock in initialize' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:1211:in call' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:1211:inblock in compile!' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in []' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:inblock (3 levels) in route!' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:801:in route_eval' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:inblock (2 levels) in route!' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:822:in block in process_route' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:820:incatch' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:820:in process_route' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:784:inblock in route!' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:783:in each' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:783:inroute!' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in dispatch!' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:inblock in call!' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in block in invoke' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:incatch' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in invoke' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:incall!' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in call' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-1.4.1/lib/rack/session/abstract/id.rb:205:incontext' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-1.4.1/lib/rack/session/abstract/id.rb:200:in call' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:incall' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in call' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:incall' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in call' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:incall' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-1.4.1/lib/rack/logger.rb:15:in call' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/rack-1.4.1/lib/rack/head.rb:9:incall' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/showexceptions.rb:21:in call' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:1334:inblock in call' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:1416:in synchronize' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:1334:incall' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/thin-1.4.1/lib/thin/connection.rb:80:in block in pre_process' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/thin-1.4.1/lib/thin/connection.rb:78:incatch' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/thin-1.4.1/lib/thin/connection.rb:78:in pre_process' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/thin-1.4.1/lib/thin/connection.rb:53:inprocess' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/thin-1.4.1/lib/thin/connection.rb:38:in receive_data' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:inrun_machine' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in run' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/thin-1.4.1/lib/thin/backends/base.rb:63:instart' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/thin-1.4.1/lib/thin/server.rb:159:in start' /Users/samanthaainsley/.rvm/gems/ruby-1.9.2-p320/gems/thin-1.4.1/lib/thin/server.rb:145:instart' /Users/samanthaainsley/dog/lib/dog/runtime/server.rb:399:in run' /Users/samanthaainsley/dog/lib/dog/runtime.rb:311:instart_stop_server' /Users/samanthaainsley/dog/lib/dog/runtime.rb:119:in run' /Users/samanthaainsley/dog/lib/dog/runtime.rb:85:inrun_file' /Users/samanthaainsley/dog/bin/dog.rb:343:in run' /Users/samanthaainsley/dog/bin/dog.rb:68:inrun' /Users/samanthaainsley/dog/bin/dog.rb:42:in run' /Users/samanthaainsley/dog/bin/dog.rb:607:in

'

salmanahmad commented 12 years ago

The commit I pushed (d606f1d) does not actually solve the problem in a principled way. I am changing the way that the Virtual Machine reports which stack traces were executed and will update the API with that information. That will hopefully actually fix this issue in a more principled way.