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
type_specifier = command.children[1]
# the parameter signature is the first child of the specifier and an
# identifier. Convert it to a string.
param_signature = type_specifier.children[0].source
# identifier. Jump to the content inside the quotes and convert it to a
# string.
param_signature = type_specifier.children[0].jump(:tstring_content).source
# The parameter name is the second child of the specifier and a symbol.
# convert it to a string.
param_name_ident = type_specifier.jump :ident

View File

@ -118,7 +118,7 @@ class TemplateHelper
function.keys.each do |key|
if function[key].class == String
begin
instantiated = type_parser.parse function[key].gsub(/'/, '').gsub(/"/, "")
instantiated = type_parser.parse function[key]
rescue Puppet::ParseError
# Likely the result of a malformed type
next
@ -132,15 +132,15 @@ class TemplateHelper
param_instantiated = type_parser.parse type
if not type_calculator.assignable? instantiated, param_instantiated
actual_types = object.type_info.map do |sig|
sig[key]
end
sig[key].to_s if sig[key]
end.compact
# Get the locations where the object can be found. We only care about
# the first one.
locations = object.files
warning = <<-EOS
[warn]: @param tag types do not match the code. The #{param[:name]}
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
# 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)
100.00% documented
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 {