Merge pull request #62 from iankronquist/type-warnings-fixes

Last PR for the Summer
This commit is contained in:
Hailee Kenney 2015-09-21 16:46:28 -07:00
commit 4e1e8cf36d
3 changed files with 8 additions and 7 deletions

View File

@ -30,8 +30,9 @@ class Puppet4xFunctionHandler < YARD::Handlers::Ruby::Base
return [] if command.children.length < 2 or command.children[1].children.length < 2 return [] if command.children.length < 2 or command.children[1].children.length < 2
type_specifier = command.children[1] type_specifier = command.children[1]
# the parameter signature is the first child of the specifier and an # the parameter signature is the first child of the specifier and an
# identifier. Convert it to a string. # identifier. Jump to the content inside the quotes and convert it to a
param_signature = type_specifier.children[0].source # string.
param_signature = type_specifier.children[0].jump(:tstring_content).source
# The parameter name is the second child of the specifier and a symbol. # The parameter name is the second child of the specifier and a symbol.
# convert it to a string. # convert it to a string.
param_name_ident = type_specifier.jump :ident param_name_ident = type_specifier.jump :ident

View File

@ -118,7 +118,7 @@ class TemplateHelper
function.keys.each do |key| function.keys.each do |key|
if function[key].class == String if function[key].class == String
begin begin
instantiated = type_parser.parse function[key].gsub(/'/, '').gsub(/"/, "") instantiated = type_parser.parse function[key]
rescue Puppet::ParseError rescue Puppet::ParseError
# Likely the result of a malformed type # Likely the result of a malformed type
next next
@ -132,15 +132,15 @@ class TemplateHelper
param_instantiated = type_parser.parse type param_instantiated = type_parser.parse type
if not type_calculator.assignable? instantiated, param_instantiated if not type_calculator.assignable? instantiated, param_instantiated
actual_types = object.type_info.map do |sig| actual_types = object.type_info.map do |sig|
sig[key] sig[key].to_s if sig[key]
end end.compact
# Get the locations where the object can be found. We only care about # Get the locations where the object can be found. We only care about
# the first one. # the first one.
locations = object.files locations = object.files
warning = <<-EOS warning = <<-EOS
[warn]: @param tag types do not match the code. The #{param[:name]} [warn]: @param tag types do not match the code. The #{param[:name]}
parameter is declared as types #{param[:types]} in the docstring, parameter is declared as types #{param[:types]} in the docstring,
but the code specifies the types #{actual_types.inspect} but the code specifies the types #{actual_types}
EOS EOS
# If the locations aren't in the shape we expect then report that # If the locations aren't in the shape we expect then report that

View File

@ -79,7 +79,7 @@ Puppet Types: 0 ( 0 undocumented)
Puppet Providers: 0 ( 0 undocumented) Puppet Providers: 0 ( 0 undocumented)
100.00% documented 100.00% documented
output output
expected_stderr = "[warn]: @param tag types do not match the code. The ident\n parameter is declared as types [\"Float\"] in the docstring,\n but the code specifies the types [Puppet::Pops::Types::PStringType]\n in the file manifests/init.pp near line 2.\n" expected_stderr = "[warn]: @param tag types do not match the code. The ident\n parameter is declared as types [\"Float\"] in the docstring,\n but the code specifies the types [\"String\"]\n in the file manifests/init.pp near line 2.\n"
expect { expect {
expect { expect {