diff --git a/src/wren_compiler.c b/src/wren_compiler.c index 2be8055a..b657c900 100644 --- a/src/wren_compiler.c +++ b/src/wren_compiler.c @@ -1731,12 +1731,19 @@ static void name(Compiler* compiler, bool allowAssignment) variable(compiler, allowAssignment, index, loadInstruction); return; } + // TODO: The fact that we return here if the variable is known and parse an + // optional argument list below if not means that the grammar is not + // context-free. A line of code in a method like "someName(foo)" is a parse + // error if "someName" is a defined variable in the surrounding scope and not + // if it isn't. Fix this. One option is to have "someName(foo)" always + // resolve to a self-call if there is an argument list, but that makes + // getters a little confusing. // TODO: The fact that we walk the entire scope chain up to global before // interpreting a name as an implicit "this" call means that surrounding // names shadow ones in the class. This is good for things like globals. - // (You wouldn't want `new Fiber` translating to `new this.Fiber`, but may - // not be what we want for other names.) One option is to make capitalized + // (You wouldn't want `new Fiber` translating to `new this.Fiber`.) But it + // may not be what we want for other names. One option is to make capitalized // names *always* global, and then a lowercase name will become on an // implicit this if it's not a local in the nearest enclosing class. @@ -2299,7 +2306,7 @@ static void endLoop(Compiler* compiler) { compiler->bytecode.data[i] = CODE_JUMP; patchJump(compiler, i + 1); - i += 2; + i += 3; } else { diff --git a/wren.xcodeproj/project.pbxproj b/wren.xcodeproj/project.pbxproj index 8d82aec9..f42c7543 100644 --- a/wren.xcodeproj/project.pbxproj +++ b/wren.xcodeproj/project.pbxproj @@ -136,7 +136,7 @@ 29AB1EFE1816E3AD004B501E /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0610; ORGANIZATIONNAME = "Bob Nystrom"; }; buildConfigurationList = 29AB1F011816E3AD004B501E /* Build configuration list for PBXProject "wren" */; @@ -179,7 +179,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; @@ -219,7 +218,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES;