Skip to content

Enforcing frozen string literals with pragma comment. #428

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jan 4, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

source 'https://rubygems.org'

# Specify your gem's dependencies in parser.gemspec
Expand Down
3 changes: 2 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# encoding:utf-8
# encoding: utf-8
# frozen_string_literal: true

require 'bundler/gem_tasks'
require 'rake/testtask'
Expand Down
3 changes: 2 additions & 1 deletion bin/ruby-parse
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env ruby
#! /usr/bin/env ruby
# frozen_string_literal: true

$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
require 'parser/runner/ruby_parse'
Expand Down
3 changes: 2 additions & 1 deletion bin/ruby-rewrite
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env ruby
#! /usr/bin/env ruby
# frozen_string_literal: true

$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
require 'parser/runner/ruby_rewrite'
Expand Down
2 changes: 2 additions & 0 deletions lib/gauntlet_parser.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'gauntlet'
require 'parser/all'
require 'shellwords'
Expand Down
2 changes: 2 additions & 0 deletions lib/parser.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

if RUBY_VERSION =~ /^1\.[89]\./
require 'parser/version'
raise LoadError, <<-UNSUPPORTED_VERSION_MSG
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/all.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'parser/ruby18'
require 'parser/ruby19'
require 'parser/ruby20'
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/ast/node.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module AST

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/ast/processor.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module AST

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/base.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

##
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/builders/default.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

##
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/clobbering_error.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
##
# {Parser::ClobberingError} is raised when {Parser::Source::Rewriter}
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/context.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
# Context of parsing that is represented by a stack of scopes.
#
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/current.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
class << self
def warn_syntax_deviation(feature, version)
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/deprecation.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
##
# @api private
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/diagnostic.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

##
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/diagnostic/engine.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

##
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/lexer/dedenter.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

class Lexer::Dedenter
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/lexer/explanation.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

module Lexer::Explanation
Expand Down
3 changes: 2 additions & 1 deletion lib/parser/lexer/literal.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# encoding: binary
# frozen_string_literal: true

module Parser

Expand Down Expand Up @@ -233,7 +234,7 @@ def coerce_encoding(string)
end

def clear_buffer
@buffer = ''
@buffer = ''.dup

# Prime the buffer with lexer encoding; otherwise,
# concatenation will produce varying results.
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/lexer/stack_state.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

class Lexer::StackState
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/messages.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
##
# Diagnostic messages (errors, warnings and notices) that can be generated.
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/meta.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
# Parser metadata
module Meta
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/rewriter.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

##
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/runner.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'benchmark'
require 'find'
require 'optparse'
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/runner/ruby_parse.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'parser/runner'
require 'parser/lexer/explanation'

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/runner/ruby_rewrite.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'parser/runner'
require 'tempfile'

Expand Down
3 changes: 2 additions & 1 deletion lib/parser/source/buffer.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# encoding: ascii-8bit
# frozen_string_literal: true

module Parser
module Source
Expand Down Expand Up @@ -243,7 +244,7 @@ def column_for_position(position)
def source_lines
@lines ||= begin
lines = @source.lines.to_a
lines << '' if @source.end_with?("\n".freeze)
lines << ''.dup if @source.end_with?("\n".freeze)

lines.each do |line|
line.chomp!("\n".freeze)
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/comment.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/comment/associator.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/collection.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/condition.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/constant.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/definition.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/for.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/heredoc.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/keyword.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/objc_kwarg.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/operator.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/rescue_body.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/send.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/ternary.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/map/variable.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/range.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
4 changes: 3 additions & 1 deletion lib/parser/source/rewriter.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down Expand Up @@ -421,7 +423,7 @@ def merge_actions!(action, existing)
end

def merge_replacements(actions)
result = ''
result = ''.dup
prev_act = nil

actions.each do |act|
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/rewriter/action.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/tree_rewriter.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source

Expand Down
2 changes: 2 additions & 0 deletions lib/parser/source/tree_rewriter/action.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
module Source
##
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/static_environment.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

class StaticEnvironment
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/syntax_error.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
##
# {Parser::SyntaxError} is raised whenever parser detects a syntax error,
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/tree_rewriter.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser

##
Expand Down
2 changes: 2 additions & 0 deletions lib/parser/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Parser
VERSION = '2.4.0.2'
end
1 change: 1 addition & 0 deletions parser.gemspec
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# encoding: utf-8
# frozen_string_literal: true

require File.expand_path('../lib/parser/version', __FILE__)

Expand Down
2 changes: 2 additions & 0 deletions test/bug_163/fixtures/input.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

if(true)
puts "Hello, world!"
end
2 changes: 2 additions & 0 deletions test/bug_163/fixtures/output.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

if true
puts "Hello, world!"
end
2 changes: 2 additions & 0 deletions test/bug_163/rewriter.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

class Rewriter < Parser::Rewriter
def on_if(node)
# Crude, totally-not-usable-in-the-real-world code to remove optional
Expand Down
2 changes: 2 additions & 0 deletions test/helper.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'tempfile'
require 'minitest/test'

Expand Down
2 changes: 2 additions & 0 deletions test/parse_helper.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module ParseHelper
include AST::Sexp

Expand Down
2 changes: 2 additions & 0 deletions test/racc_coverage_helper.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'racc/grammarfileparser'

# Unfortunately, Ruby's Coverage module ignores module_eval statements,
Expand Down
2 changes: 2 additions & 0 deletions test/test_base.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'helper'
require 'parser/current'

Expand Down
Loading